Ответ 1
Просто поднимите событие NotifyPropertyChanged
для свойства, которое вы хотите проверить, или если вы находитесь в .NET 4.5 или Silverlight 4, используйте INotityDataErrorInfo.
У меня есть два элемента управления на некоторой панели: текстовое поле и поле со списком:
<TextBox Text="{Binding ShapeName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<ComboBox SelectedItem="{Binding ActiveStageViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
Мне нужно принудительно выполнить проверку idataerrorinfo для текстового поля, когда я выберу что-то в combobox. Как это сделать?
Код из 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;
}
}
Просто поднимите событие NotifyPropertyChanged
для свойства, которое вы хотите проверить, или если вы находитесь в .NET 4.5 или Silverlight 4, используйте INotityDataErrorInfo.
Стоит также помнить, что вы можете повысить значение NotifyPropertyChanged с помощью свойства String.Empty. Это приведет к проверке всех свойств на этом уровне. Может быть полезно время от времени.