Wpf 如何基于if Validation.HasError=False运行DataTrigger?
在我的Wpf 如何基于if Validation.HasError=False运行DataTrigger?,wpf,datagrid,datatrigger,Wpf,Datagrid,Datatrigger,在我的DataGridTextColumn上,我想运行DataTrigger,但只有在Validation.HasError为False 这就是我目前的情况: <DataGridTextColumn Header="Volts" Binding="{Binding DcVolts, Converter={StaticResource StringToDecimalConverter}}" Width="Auto">
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上,工具提示中提供的消息(根据我创建的规则)重复了
非常感谢您的建议。您应该在绑定路径周围添加括号,因为验证。HasError
是一个附加属性:
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.HasError)}"
Value="True" />
啊,不错!这至少让触发器按我所希望的那样工作,现在只是重复错误会议的情况。我有一条关于DCV的规则,它不能为空,因此,当它为空时,单元格变为粉红色,工具提示提供消息“伏特不能为空”,但由于某种原因,当我有此触发器时,它会复制消息。@Pete:如果您有其他问题,请问一个新问题,请确保包含一个。我在最初的问题中确实包含此问题,在这里,我用第二段代码做了我想做的事情,但是消息在哪里被复制了。我可以提出另一个问题,但内容基本相同。事后看来,也许我应该在标题中加入“不重复验证错误消息”。我的错。@Pete:编辑你的问题,将你的问题包括在最低限度的回购中。我只是在这样做的过程中,但我想我需要把所有的代码发布到我现在的位置,我的NotifyDataErrorInfo类的模型和规则等。我想我可能只是接受你的答案,因为它解决了我最初的问题,并与我自己的其他人战斗。我不能指望有人真的花那么多时间来解决这个问题。
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.HasError)}"
Value="True" />