好吧,使用WPF(使用MVVM)並遇到問題,需要一些輸入。我有一個簡單的類WPF數據綁定綁定錯誤通知
像下面(假設我已經IDataErrorInfo的實現):
public class SimpleClassViewModel
{
DataModel Model {get;set;}
public int Fee {get { return Model.Fee;} set { Model.Fee = value;}}
}
我再嘗試綁定到它在XAML:
<TextBox Text={Binding Fee, ValidatesOnDataErrors=true}/>
當用戶然後清除出文本,發生數據綁定錯誤,因爲它不能將string.empty轉換爲int。那麼,費是一個必填字段,但由於數據綁定不會轉換回來,我不能提供錯誤信息,因爲我的類沒有更新。那麼我需要做到以下幾點?
public class SimpleClassViewModel
{
DataModel Model {get;set;}
int? _Fee;
public int? Fee
{
get { return _Fee;}
set { _Fee = value;if (value.HasValue) { Model.Fee = value;}
}
}
我不確定我是否同意你的看法。該費似乎是你將進行計算的財產,所以應該是數字。所有數字字段將通過接受字符串的文本框進入。你提出它的方式,你將不得不實現所有代表具有字符串和數字變體的數字的屬性。使用轉換器,您只需編寫一次轉換代碼即可。 – Dabblernl 2009-06-09 10:39:05
沒有理由必須不止一次地寫入轉換代碼 - 只是在必要時將其分解。然而,通常這只是一個簡單的調用TryParse方法,所以在這裏沒有任何問題。而且,將代碼放入虛擬機意味着更少的設計師可以在視圖中出錯。 – 2009-06-09 12:45:04