C# 如何在WPF ViewModel中使用模型验证规则
我正在使用带有MVVM模式的WPF,并且刚刚开始一个非常大的项目 为了将关注点分开,我想将所有验证规则放入数据模型中 但是当我回顾如何进行WPF验证时,我能找到的所有示例都显示了如何使用持有验证规则的ViewModel进行验证。其中一些示例显示了对WPF的一些真正深入的理解,并且非常酷C# 如何在WPF ViewModel中使用模型验证规则,c#,wpf,validation,mvvm,C#,Wpf,Validation,Mvvm,我正在使用带有MVVM模式的WPF,并且刚刚开始一个非常大的项目 为了将关注点分开,我想将所有验证规则放入数据模型中 但是当我回顾如何进行WPF验证时,我能找到的所有示例都显示了如何使用持有验证规则的ViewModel进行验证。其中一些示例显示了对WPF的一些真正深入的理解,并且非常酷 在这个特定的应用程序中,我在编辑的ViewModels和模型之间有一个1:1的映射,因此我可以将它放在ViewModels中。但是感觉不太对。使用IDataErrorInfo(如果您正在使用)验证将在绑定到视图的
在这个特定的应用程序中,我在编辑的ViewModels和模型之间有一个1:1的映射,因此我可以将它放在ViewModels中。但是感觉不太对。使用
IDataErrorInfo
(如果您正在使用)验证将在绑定到视图的对象上发生
所以如果你有
<TextBox Text="{Binding Name}" />
只有在实际设置模型上的必需属性以使验证生效时,这才有用
视图模型:
public string this[string propname]
{
get { return _model[propname]; }
}
public string SomeProperty
{
get { reutrn _model.SomeProperty; }
set {
_model.OtherProperty = value;
RaisePropertyChanged("SomeProperty");
}
}
然而,我更喜欢第二个绑定选项,因为它的问题是它不是很枯燥,所以我几乎总是将数据模型作为视图模型上的一个属性公开(因为它负责数据),并让视图模型管理视图的模型,这更多的是关于UI如何与数据交互
在非常复杂的场景中,最好将验证与模型和视图模型分开,并让视图模型和数据模型都使用它
public string SomeProperty
{
get { reutrn _model.SomeProperty; }
set {
_model.OtherProperty = value;
RaisePropertyChanged("SomeProperty");
}
}