2013-06-18 15 views
1

我有一個雙CLRPropertyTexttbox.Text.工作OneWay數據綁定,因爲不是每個userinput是可以接受的,我不使用TwoWay。順便說一句,我使用現有的Command,這阻礙了ICommand接口。Userinput在文本框覆蓋數據綁定

一旦用戶輸入Textbox中的文本,Databinding就會被銷燬。

<TextBox Text="{Binding Path=myDouble, Converter={converter:DoubleToTextConverter}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/> 
+0

「摧毀」是什麼意思?用戶輸入將覆蓋源屬性值,至少直到以另一種方式再次更新源,這是預期的行爲。 – Pragmateek

+0

ICommand與此有什麼關係?此外,如果不是每個用戶輸入都有效,則使用[輸入驗證](http://www.codeproject.com/Articles/15239/Validation-in-Windows-Presentation-Foundation)的形式或忽略將新的「值」應用於屬性'setter'? – Viv

+0

@Pragmateek「破壞」我的意思是,當源屬性更新文本框中的文本不會更新。 (它直到用戶改變文本才能工作得很好) –

回答

0

您的程序如何知道用戶輸入是否可以接受?如果您不告訴他?
要檢查用戶輸入,你可以做到以下幾點:

  • 使用DataValidation只接受某些輸入。
  • 創建第二個文本框,用戶在其中輸入內容,如果沒有問題(您在ViewModel中檢查),將其應用於第一個TextBox的綁定屬性myDouble
+0

我的程序知道這個值是否可以接受。 ICommand有一個'bool CanExecute(object Parameter){...}'方法。因此,如果值不正確,那麼當輸入不可用時,「使用」命令的按鈕不可用。我的問題是誰來讓數據綁定工作,而不是輸入驗證。 –

+0

這不會按照你想要的方式工作。但你可以f.e.使用標籤來顯示值(Binding Mode = OneWay)和一個TextBox,讓用戶在(Binding Mode = OneWayToSource)中輸入值。 –