【问题标题】:Getting Control level (view) validation errors back to the View Model将控制级别(视图)验证错误返回到视图模型
【发布时间】:2012-04-04 20:09:09
【问题描述】:

我有一个从视图模型绑定到对象的自定义控件。该控件有自己的“迷你视图模型”(实现了 raiseproperychanged 和 idataerrorinfo),它的代码用于某些特定的验证。

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

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

【问题讨论】:

    标签: c# wpf validation mvvm


    【解决方案1】:

    您搞错了 - 控件设置 ViewModel 上的值(通过绑定),而 ViewModel 验证每个字段并通过 IDataErrorInfo 提供错误消息。更多信息请见:http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/

    【讨论】:

    • 我知道 IDataErrorInfo 是如何工作的,我正在寻找一种方法来表明“Person”本身是无效的,而不仅仅是 person 的子属性。
    • 虽然它不能解决我的直接问题,但我将把它标记为答案,因为我真正的问题似乎是方法,而不是缺少做我想做的事情的界面. ;p
    猜你喜欢
    • 2021-03-02
    • 2012-03-21
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多