折りたたまれたコンテンツにエラーがあることをエキスパンダーヘッダーで示す方法
-
08-07-2019 - |
質問
私はテキストボックスを含むエキスパンダーを持っています、テキストボックスはwpf検証のものを使用してそれらの周りに赤いボックスを描画します(テキストボックスはAdorner Decoratorsでラップされ、エキスパンダーがどこにでも空の赤いボックスが表示されないようにします折りたたみ)
エキスパンダーのヘッダーに、エラーのあるコンテンツ(折りたたまれた状態の場合)-アイコンまたは赤い感嘆符などがあることを示したい。私は検証関数からコードでこれを行う方法を考えています(理想的ではありません)が、xamlでそれを行う方法はありますか?すべての子のValidation.HasErrorを何らかの形で指しているトリガーで、エキスパンダーのスタイルを使用できますか?
ご意見ありがとうございます。
Trev
解決
エキスパンダーの内容がわかっている場合は、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