我有一个自定义控件,它从视图模型绑定到一个对象。该控件有自己的“迷你视图模型”(实现raiseproperychanged和idataerrorinfo),它是一些特定验证的代码。
此控件内部使用的某些属性可能导致控件处于无效状态(这些属性是控件固有的,并不代表我们绑定的模型的属性)。如何将这些验证错误“冒泡”,以便绑定到此控件的属性显示为有验证错误?
有一个更清晰的例子。假设我有一个person对象,我绑定到自定义usercontrol的person属性。此控件将允许您编辑子属性和此类人员。除了通常应用于人物对象之外,此控件还有其他验证,例如控件在用户关闭控件创建的对话框之前“无效”,或者单击一个表示已完成编辑的复选框。我希望传播这些验证错误,以便绑定到person属性显示验证错误,或者更具体地说,包含它的VM。
答案 0 :(得分:1)
你有错误的方法 - 控件设置ViewModel上的值(通过绑定),ViewModel验证每个字段并通过IDataErrorInfo提供错误消息。有关详细信息,请参阅:http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/