Я использую свой пользовательский механизм проверки для проверки моих свойств ViewModel. Я застрял на последнем шаге. Я хочу изменить цвет фона TextBox
при сбое проверки. Итак, я реализовал DataTrigger
s и связал его со свойством HasError. HasError - это обычное свойство CLR.
public bool HasError
{
get
{
var hasError = Errors.Count() > 0;
return hasError;
}
}
А вот и код:
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=HasError}" Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
Проблема в том, что он будет запущен только один раз, когда this.DataContext
назначен для модели вида. Итак, я подумал, что, может быть, я смогу использовать свойство зависимости вместо обычного свойства, но это тоже не сработало.
Есть идеи?
ОБНОВЛЕНИЕ:
Кажется, что DataTrigger
запускаются только при подключении к свойствам CLR, а не к свойствам зависимостей.
ОБНОВЛЕНИЕ 2:
Если бы работал только следующий код:
****<Trigger Property="{Binding Path=HasError}" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>****
ОБНОВЛЕНИЕ 3 РАБОТА:
Как уже упоминалось в ответе, я должен был запустить событие INotifyPropertyChanged
.
общественность
ObservableCollection
ошибки
{
get {return (ObservableCollection) GetValue (ErrorsProperty);
}
задавать
{
SetValue (ErrorsProperty, value);
OnPropertyChanged("HasError");
}
}