【发布时间】:2015-09-24 14:04:10
【问题描述】:
问题:我希望使用在UI上包含输入文本框的默认错误,但是在一个字段中输入需要突出显示其他多个有错误的文本框。
示例:如果所有文本框都是空的,则没有错误。如果只有一个文本框有一个字符串,那么其他两个文本框都应该突出显示。 (带有数据的文本框不是错误,但其他两个 - 如果为空 - 现在有错误)。如果字符串随后被删除并且所有文本框都为空,则不会出现错误并且不会突出显示任何内容。
我似乎找不到这个简单问题的答案。我有一个具有三个属性的业务对象 (MVVM),每个属性都绑定到 XAML 中的一个文本框,如下所示:
<wc:AutoFilteredComboBox
..
Text="{Binding ReferredBy.NewReferralName, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
....
/>
<TextBox
Text="{Binding ReferredBy.Phone, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
/>
<TextBox
......
Text="{Binding ReferredBy.PriorAuthorizationNumber, ValidatesOnDataErrors=True}"
/>
以及实现 IDataErrorInfo 的 ViewModel:
public string Error
{
get { return null; }
}
// any returned non-empty string is an error.
public string this[string columnName]
{
get
{
switch (columnName)
{
case "NewReferralName":
if (!String.IsNullOrWhiteSpace(PriorAuthorizationNumber) || !String.IsNullOrWhiteSpace(Phone))
{
if (String.IsNullOrWhiteSpace(NewReferralName))
return "NewReferralName is invalid";
}
break;
case "Phone":
if (!String.IsNullOrWhiteSpace(NewReferralName) && String.IsNullOrWhiteSpace(Phone))
{
return "Phone is invalid";
}
break;
case "PriorAuthorizationNumber":
if (!String.IsNullOrWhiteSpace(NewReferralName) && String.IsNullOrWhiteSpace(PriorAuthorizationNumber))
{
return "PriorAuthorizationNumber is invalid";
}
break;
}
// string.Empty is no error.
return string.Empty;
}
}
那么,如果将数据输入到一个文本框,如何在另一个文本框上显示错误? IDataErrorInfo 可以用于此,还是有更好的方法?
TIA
【问题讨论】:
标签: c# wpf validation xaml