好吧,使用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