就我开发MVVM的WPF应用程序而言,我绝不会通过viewmodel的公共属性来暴露模型。无论如何,在我刚来到Silverlight和WCF RIA的世界之后,我发现了实现数据验证的新方法,这就是Required属性所说的。 (还有其他的属性)为什么在Silverlight MVVM中通过ViewModel公开模型并不好?
这次我不是在viewmodel里面创建验证逻辑,而是在模型本身内部完成几乎验证逻辑。
public class TestUserPM {
[Key]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string Email { get; set; }
}
在那之后,我需要在视图模型是暴露TestUserPM的类型的公共财产,让查看直接绑定到模型。
我认为这不是优雅的解决方案,但它可以工作,并且它不需要在viewmodel属性内创建乏味的验证。
这种方法有什么缺点吗?
更新1
我刚刚发现1下侧,可它有解决方案在那里。我想绑定Button的命令,例如,按钮保存到ViewModel中的Command,但是当且仅当所有信息都有效时才能执行此按钮。从我使用WPF MVVM的经验来看,我将帮助OnCanExecuteChanged()
在public string this[string columnName]
之内IDataErrorInfo
。
我该如何处理这种要求?
我也这么做。 ViewModel在这里公开和调整模型到视图。 – 2010-11-04 16:24:35
使用该模型的想法直接违反了封装规则,因为没有人应该执行'MyObject.Child.ChildChild.NChild.SomeProperty'。它也是模型和视图之间的分隔,因为如果你在你的模型中改变了Propertyname,你必须在你的视图/ – WiiMaxx 2015-12-13 17:49:58