验证WPF选项

时间:2018-01-23 12:41:26

标签: wpf data-annotations inotifypropertychanged idataerrorinfo

我现在已经在互联网上待了3个小时而没有多少帮助。 我正在尝试使用MVVM原则在我的UI上实现具有以下要求的验证。

目前在我的模型上使用DataAnnotations: 例如:

    private string _name;
    [Required(ErrorMessage = "Name must be filled")]
    public string Name
    {
        get { return _name; }
        set { this.Update(x => x.Name, () => _name= value, _name, value); }
    }

1)我只想在点击按钮(提交)

时进行验证

2)如果我在UI上说了5个验证,我也想在列表中显示它们。

我看了几种方法,并且不确定哪种方法最适合我的2项要求:

IDataInfoError?

INotifyDataErrorInfo?

DataAnnotations? (当前实施)

任何能指出正确方向的人都会提示吗?

1 个答案:

答案 0 :(得分:0)

您应该阅读以下博文:https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/。它提供了一个示例,您可以使用数据注释和Decimal esmcost; if (ds.Tables["wsmtbl"].Rows[0]["esmcost"] == DBNull.Value) esmcost = 0.00; else esmcost = Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["esmcost"]); Decimal psmcost; if (ds.Tables["wsmtbl"].Rows[0]["psmcost"] == DBNull.Value) psmcost = 0.00; else psmcost = Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["psmcost"]); if (esmcost != psmcost) { ... } 接口实现验证:

Decimal esmcost = ds.Tables["wsmtbl"].Rows[0]["esmcost"]
    == DBNull.Value ? 0.00 : Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["esmcost"]);