WPF - 如何访问viewmodel中的错误数?

时间:2014-04-08 08:24:27

标签: wpf validation mvvm

我有一个代表我的应用程序主视图的viewmodel。此视图模型包含一个模型对象的ObservableCollection,我的视图中的网格绑定到该模型对象。集合中的每个项都实现了IDataErrorInfo,这有助于标准的WPF验证机制,即模型中的错误导致视图控件突出显示红色(在本例中为单元格)。

我的问题是,我想在viewmodel中执行一段逻辑,它需要访问页面上的错误数量(或者更确切地说,如果有错误)。我无法从viewmodel本身看到一种方法来访问它,所有的WPF验证似乎都包含在视图中,这是对的吗?

1 个答案:

答案 0 :(得分:2)

我认为没有任何内容"内置"为达到这个。一种选择是在OC中的每个模型上公开一个属性,例如IsValid,您可以在模型的IDataErrorInfo索引属性中设置该属性。然后,您的VM可以使用一些Linq来检查OC中IsValid = false的任何模型。

如果您打算让您的虚拟机暴露某种" PageHasErrors"属性,然后您可能需要让VM订阅每个模型的PropertyChange事件(特别是IsValid属性),假设模型实现了INPC。在VM的事件处理程序中,您将更新" PageHasErrors"属性是否基于任何模型IsValid = false。