gpt4 book ai didi

silverlight - silverlight MVVM 中的验证错误消息

转载 作者:行者123 更新时间:2023-12-03 10:40:31 26 4
gpt4 key购买 nike

我正在尝试从 Josh Smith 的示例中实现数据验证技术:Using a viewmodel to provide meaningful validation...

我的代码与示例非常相似,除了一些不同之处,即我使用的是 MVVM-Light 工具包,而我的模型人员类是来自 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
}
}
}

最后我有一个 View 模型:
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;

}
}
}

因此,当我绑定(bind)到 View 模型中的属性时,IDataErrorInfo 的索引器中定义的验证代码会在 View 模型和我的文本框上执行,或者如果我的验证失败,则会像预期的那样突出显示任何内容。然而,在我的代码中,模型端的索引器根本不会被执行。老实说,我没有看到或理解应该调用它的机制。我已经运行了 Josh Smith 的示例中的示例代码,它确实有效,调用了 MV 的 this[],然后如果验证通过了模型的 this[] 命中以进行额外的验证,但我这辈子看不到它是如何实现的发生。

我真的希望这是我忽略的简单事情。感谢您查看它。

最佳答案

你不见了

return _person[propertyName];

来自 ViewModel 中的索引器。

关于silverlight - silverlight MVVM 中的验证错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com