在我的DataGridTextColumn
上,我想运行DataTrigger
,但仅当Validation.HasError
为False
这就是我现在所拥有的:
<DataGridTextColumn Header="Volts"
Binding="{Binding DcVolts, Converter={StaticResource StringToDecimalConverter}}"
Width="Auto">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}"
BasedOn="{StaticResource DataGridTextColumnElementErrorStyle}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Validation.HasError}"
Value="False" />
<Condition Value="False">
<Condition.Binding>
<MultiBinding Converter="{StaticResource EqualityConverter}">
<Binding Path="DcVolts" />
<Binding Path="DcSpecVolts" />
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Background" Value="Orange" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
背后的想法是,Validation.HasError
必须为 False
,MultiDataTrigger
才能设置 BackGround
如果 EqualityConverter
的结果为 False
Orange
这是因为如果Validation.HasError
为True
,那么我想要我的DataGridTextColumnElementErrorStyle
通常的Pink
背景当我在属性
上设置的规则失败时提供。
我实际上更接近这个:
<DataGridTextColumn Header="Volts"
Binding="{Binding DcVolts, Converter={StaticResource StringToDecimalConverter}}"
Width="Auto">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource DataGridTextColumnElementErrorStyle}">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource EqualityConverter}" >
<Binding Path="DcVolts" />
<Binding Path="DcSpecVolts" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Orange" />
</DataTrigger>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Pink" />
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
但问题是,在 Validation.HasError
上,ToolTip
中提供的消息(根据我创建的规则)是重复的。
非常感谢任何建议。
最佳答案
您应该在绑定(bind)路径周围添加括号,因为 Validation.HasError
是一个附加属性:
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.HasError)}"
Value="True" />
关于wpf - 如何根据 Validation.HasError = False 运行 DataTrigger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286974/