我有一个代表我的应用程序主视图的viewmodel。此视图模型包含一个模型对象的ObservableCollection,我的视图中的网格绑定到该模型对象。集合中的每个项都实现了IDataErrorInfo,这有助于标准的WPF验证机制,即模型中的错误导致视图控件突出显示红色(在本例中为单元格)。
我的问题是,我想在viewmodel中执行一段逻辑,它需要访问页面上的错误数量(或者更确切地说,如果有错误)。我无法从viewmodel本身看到一种方法来访问它,所有的WPF验证似乎都包含在视图中,这是对的吗?
答案 0 :(得分:2)
我认为没有任何内容"内置"为达到这个。一种选择是在OC中的每个模型上公开一个属性,例如IsValid
,您可以在模型的IDataErrorInfo索引属性中设置该属性。然后,您的VM可以使用一些Linq来检查OC中IsValid = false的任何模型。
如果您打算让您的虚拟机暴露某种" PageHasErrors"属性,然后您可能需要让VM订阅每个模型的PropertyChange事件(特别是IsValid
属性),假设模型实现了INPC。在VM的事件处理程序中,您将更新" PageHasErrors"属性是否基于任何模型IsValid = false。