Как я могу указать в заголовке расширителя, что свернутое содержимое содержит ошибку
-
08-07-2019 - |
Вопрос
У меня есть расширители, которые содержат текстовые поля, текстовые поля используют материал проверки wpf, чтобы нарисовать вокруг них красное поле ( текстовые поля обернуты в декораторы Adorner, чтобы убедиться, что я не получаю пустые красные поля повсюду, когда расширители свернуты)
Я хочу указать в заголовке расширителя, что в нем есть содержимое, содержащее ошибки (на случай, если оно находится в свернутом состоянии) - значок, красный восклицательный знак или что-то в этом роде.Я думаю, что вижу способ сделать это в коде из моей функции проверки (не идеально), но есть ли способ сделать это в xaml?Могу ли я использовать стиль для расширителя с триггером, каким-либо образом указывающим на проверку.Ошибка всех дочерних элементов?
спасибо за любые мысли..
Трев
Решение
Если вам известно содержимое вашего расширителя, вы можете использовать для этого 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>
Если содержимое расширителя неизвестно, то вам, вероятно, придется установить привязку.NotifyOnValidationError для текстовых полей и обработать прикрепленное событие Error .