我正在使用我的自定义验证引擎来验证我的 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 错误 { 获取 { 返回 (ObservableCollection)GetValue(ErrorsProperty); } set { SetValue(ErrorsProperty, value);
OnPropertyChanged("HasError"); } }