我现在已经在互联网上待了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? (当前实施)
任何能指出正确方向的人都会提示吗?
答案 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"]);