Я использую свой собственный механизм проверки для проверки своих свойств 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
s запускаются только при подключении к свойствам CLR, а не к свойствам зависимостей.
ОБНОВЛЕНИЕ 2:
Если бы работал только следующий код:
****<Trigger Property="{Binding Path=HasError}" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>****
ОБНОВЛЕНИЕ 3 РАБОТАЕТ:
Как упоминалось в ответе, мне пришлось запустить событие INotifyPropertyChanged
.
общедоступные ошибки ObservableCollection {получить {return (ObservableCollection) GetValue (ErrorsProperty); } set {SetValue (ErrorsProperty, значение);
OnPropertyChanged("HasError"); } }