验证错误消息我试图实现从约什·史密斯的例子在这里进行数据验证技术:Using a viewmodel to provide meaningful validation...在Silverlight MVVM
我的代码是非常相似的例子,除了少数区别,即我使用MVVM-Light工具包,我的模型person类是来自WCF后端的部分类。
下面是有问题的代码的一个例子:
首先是它来源于WCF类的自动生成的版本:
public partial class Person : BaseObject
{
private string FooField;
public string Foo {
get {
return this.FooField;
}
set {
if ((object.ReferenceEquals(this.FooField, value) != true)) {
this.FooField = value;
this.RaisePropertyChanged("Foo");
}
}
}
我然后延伸的部分类来实现IDataErrorInfo的:
public partial class Person : IDataErrorInfo
{
public string Error
{
get { return null;}
}
public string this[string propertyName]
{
if (propertyName == "Foo")
{
//Do some backend Validation
}
}
}
而且最后我有一个视图模型:
public class PersonViewModel : INotifyProperyChanged, IDataErrorInfo
{
private string _fooString;
private Person _person;
...
public string Foo {
get { return _fooString; }
set
{
if (value == _fooString;)
return;
_fooString = value;
RaisePropertyChanged("Foo");
}
public string this[string propertyName]
{
if (propertyName == "Foo")
{
string msg = Validate(Foo); //Frontend Validation, range, format, etc.
if(msg ! = null)
return msg;
_person.Foo = Foo;
}
}
}
所以,当我绑定到财产的视图模型中IDataErrorInfo的的索引定义的验证代码获取视图模型执行,如果我的验证失败,我的文本框或任何被突出显示预期。但是在我的代码中,MODEL方面的索引器根本不会被执行。我可以诚实地说,我没有看到或理解应该调用它的机制。我已经运行距离约什 - 史密斯的例子示例代码和它的工作,称该MV的这个[],那么如果验证通过模型的这个[]命中为额外的验证,但我为我的生活不能看到它发生。
我真的希望这是一件简单的我俯瞰。感谢您的关注。
你可以发布你的XAML吗? – 2011-02-11 15:01:08