У меня проблема:
У меня есть некоторые элементы управления в форме (флажок, поле со списком, слайдер, текстовое поле). Их значения связаны с различными свойствами модели представления.
Когда свойство модели представления имеет определенное значение, я
хотите, чтобы эти элементы управления были «фиксированными» (отображается сообщение об ошибке, и они устанавливаются на некоторое фиксированное значение (например: флажок снят, когда пользователь пытается его установить, ползунок установлен на определенное значение, выбранный элемент комбо является вторым элементом в списке).
Я сделал это так (упрощенный пример для текстового поля):
По мнению:
<TextBox
Text="{Binding ViewModelProperty,
NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
/>
В представлении модель:
Свойство определяется так:
String _ViewModelProperty;
public String ViewModelProperty
{
get
{
return _ViewModelProperty;
}
set
{
_ViewModelProperty = value;
OnPropertyChanged("ViewModelProperty");
}
}
и реализация IDataErrorInfo:
String IDataErrorInfo.this[String propertyName]
{
get
{
String error = null;
if (propertyName == "ViewModelProperty")
{
if (ViewModelProperty != "FixedValue")
{
error = DisplayMessage("You can only set a fixed value here");
ViewModelProperty= "FixedValue";
}
}
return error;
}
}
Это хорошо работает для флажка, но для всех других элементов управления он работает следующим образом: пользователь устанавливает «неправильное» значение, отображается сообщение об ошибке, а затем, вместо обновления элемента управления с фиксированным значением, неверное значение по-прежнему отображается (оно больше не синхронизируется с моделью представления).
Я не могу понять, как принудительно обновить значение элемента управления.
Заранее спасибо.