我在某个面板上有两个控件:textbox和combobox:
<TextBox Text="{Binding ShapeName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<ComboBox SelectedItem="{Binding ActiveStageViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
当我在组合框上选择一些内容时,我需要强制对文本框进行idataerrorinfo验证。怎么做?
来自viewmodel的代码:
string IDataErrorInfo.this[string propertyName]
{
get
{
var error = string.Empty;
if (propertyName == Expression.GetPropertyName(() => ActiveStageViewModel))
{
// TODO: Add functionality to force ShapeName property validation
return error;
}
if (propertyName == Expression.GetPropertyName(() => ShapeName))
{
error = ValidateShapeName();
}
TooltipMessage = error;
return error;
}
}
答案 0 :(得分:21)
只需为要验证的属性引发NotifyPropertyChanged
事件,或者如果您使用的是.NET 4.5或Silverlight 4,请使用INotityDataErrorInfo。
答案 1 :(得分:14)
还值得记住,您可以使用String.Empty属性引发NotifyPropertyChanged。这将强制验证该级别的所有属性。有时可能有用。