2012-04-04 62 views
0

我有一个自定义控件绑定到视图模型中的对象。该控件拥有自己的“迷你视图模型”(实现raiseproperychanged和idataerrorinfo),它的代码仅用于某些特定的验证。将控制级别(视图)验证错误返回到视图模型

该控件的内部使用了一些属性,可能导致控件处于无效状态(这些属性是控件固有的,并且不代表我们绑定的模型的属性)。我怎样才能让这些验证错误“冒泡”,以便与此控件绑定的属性显示为具有验证错误?

有关更清晰的示例。假设我有一个人物对象绑定到自定义用户控件的person属性。该控件将允许您编辑人员的子属性等。除了通常应用于人员对象的控件之外,在此控件中还有其他验证,例如控件在用户关闭控件创建的对话框之前为“无效”,或者单击指示已完成编辑的复选框。我希望将这些验证错误传播出去,以便绑定到person属性显示验证错误,或者更具体地说,包含它的VM。

回答

1

你有错误的方法 - 控件在ViewModel上设置值(通过绑定),并且ViewModel验证每个字段并通过IDataErrorInfo提供错误消息。欲了解更多信息,请参阅:http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/

+0

我知道IDataErrorInfo是如何工作的,我正在寻找一种方法来表明“Person”本身是无效的,而不仅仅是人的子属性。 – Brandorf 2012-04-04 20:20:29

+0

虽然它不能解决我眼前的问题,但我会将其标记为答案,因为看起来我真正的问题是方法,而不是缺少一个接口来做我想做的事情。 ,p – Brandorf 2012-04-16 21:32:07