c# – 如何在WPF ViewModel中使用模型验证规则
我正在使用
WPF和MVVM模式,只是启动一个非常大的项目.
为了保持关注点,我想将所有验证规则放入我的数据模型中. 但是,当我查看如何进行WPF验证时,我能找到的所有示例都显示了如何使用包含验证规则的ViewModel来完成此操作.其中一些示例显示了对WPF的一些真正深刻的理解,并且非常酷. 在这个特定的应用程序中,我在编辑和模型的ViewModel之间有一个1:1的映射,所以我可以把它放在ViewModels中.但它感觉不对. 解决方法
使用IDataErrorInfo进行验证(如果这是您正在使用的)将发生在View上绑定的对象上.
所以,如果你有 <TextBox Text="{Binding Name}" /> 这将在ViewModel上.但是,如果将模型公开为视图模型上的属性,则将在数据模型上进行验证. <TextBox Text="{Binding Model.Name}" /> 通过第一个选择,您可以绑定到视图模型属性并路由到包含实际验证的数据模型,然后在视图模型上实现IDataErrorInfo并将验证路由到模型 视图模型: public string this[string propname] { get { return _model[propname]; } } 仅当您在模型上实际设置所需属性以使验证工作时,此选项才有用 视图模型: public string SomeProperty { get { reutrn _model.SomeProperty; } set { _model.OtherProperty = value; RaisePropertyChanged("SomeProperty"); } } 但是我更喜欢第二个绑定选项,因为这个问题是它不是很干,所以我几乎总是将DataModel暴露为视图模型上的属性(因为它负责数据)并让ViewModel管理视图的模型,更多地是关于UI如何与数据交互. 在非常复杂的场景中,最好将验证与模型和视图模型分开,并让视图模型和数据模型都使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |