如何在Expander标头中指出折叠内容有错误
-
08-07-2019 - |
题
我有包含文本框的扩展器,文本框使用wpf验证的东西在它们周围绘制一个红色框(文本框包含在Adorner装饰器中,以确保当扩展器是时,我到处都没有空红框折叠)
我想在扩展器的标题中指出它有内容有错误(如果它处于折叠状态) - 图标或红色感叹号或其他东西。我想我在验证函数的代码中看到了一种方法(不理想),但有没有办法在xaml中执行此操作?我是否可以使用触发器的样式以某种方式指向所有子项的Validation.HasError?
感谢您的任何想法..
崔佛
解决方案
如果您知道扩展器的内容,可以使用MultiDataTrigger执行此操作:
<Expander>
<Expander.Header>
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="ERROR"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=txtWidth, Path=(Validation.HasError)}" Value="False"/>
<Condition Binding="{Binding ElementName=txtHeight, Path=(Validation.HasError)}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Text" Value="NO ERROR"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Expander.Header>
<StackPanel>
<TextBox x:Name="txtWidth" Text="{Binding Width, ElementName=rect, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
<TextBox x:Name="txtHeight" Text="{Binding Height, ElementName=rect, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
<Rectangle x:Name="rect" Width="100" Height="100" Margin="10" Fill="Green"/>
</StackPanel>
</Expander>
如果未知扩展器的内容,那么您可能必须在TextBoxes上设置Binding.NotifyOnValidationError并处理Error附加事件。
不隶属于 StackOverflow