DataTrigger 到控件的 Validation.HasError
DataTrigger to a control's Validation.HasError
我有一个使用 INotifyDataErrorInfo 接口的用户控件,当它出错时它会变成红色,在这个用户控件中我放了一个 TextBlock,下面的 DataTrigger 似乎不起作用:
<TextBlock Text="{Binding DurationText}"
Grid.Row="1">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
Value="True">
<Setter Property="Foreground"
Value="White">
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我确保我的用户控件 (ActivityUserControl) 的 x:Name 是正确的,用户控件本身在出错时变为红色,但 TextBlock 的 DataTrigger 不起作用(文本保持黑色)。
您应该将 DataTrigger
的 Value
设置为开头:
<DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
Value="True">
...
您还应确保 ActivityUserControl
与 TextBlock
在同一名称范围内,并且确实包含一些验证错误。
您可以通过使用 RelativeSource
属性 绑定到父级 UserControl
来解决名称范围问题:
Binding="{Binding Path=(Validation.HasError),
RelativeSource={RelativeSource AncestorType=UserControl}}"
我有一个使用 INotifyDataErrorInfo 接口的用户控件,当它出错时它会变成红色,在这个用户控件中我放了一个 TextBlock,下面的 DataTrigger 似乎不起作用:
<TextBlock Text="{Binding DurationText}"
Grid.Row="1">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
Value="True">
<Setter Property="Foreground"
Value="White">
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我确保我的用户控件 (ActivityUserControl) 的 x:Name 是正确的,用户控件本身在出错时变为红色,但 TextBlock 的 DataTrigger 不起作用(文本保持黑色)。
您应该将 DataTrigger
的 Value
设置为开头:
<DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
Value="True">
...
您还应确保 ActivityUserControl
与 TextBlock
在同一名称范围内,并且确实包含一些验证错误。
您可以通过使用 RelativeSource
属性 绑定到父级 UserControl
来解决名称范围问题:
Binding="{Binding Path=(Validation.HasError),
RelativeSource={RelativeSource AncestorType=UserControl}}"