1

テキストボックスを含むエキスパンダーがあります。テキストボックスは、wpf検証機能を使用して、その周りに赤いボックスを描画します(テキストボックスは、エキスパンダーが折りたたまれたときにどこでも空の赤いボックスが表示されないように、Adornerデコレーターでラップされます)

エキスパンダーのヘッダーに、エラーのあるコンテンツ(折りたたまれた状態の場合)(アイコンまたは赤い感嘆符など)があることを示したいと思います。検証関数のコードでこれを行う方法があると思いますが(理想的ではありません)、xamlでこれを行う方法はありますか?すべての子のValidation.HasErrorを何らかの形で指すトリガーを使用して、エキスパンダーのスタイルを使用できますか?

考えてくれてありがとう。

トレブ

4

1 に答える 1

2

エキスパンダーの内容がわかっている場合は、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>

エキスパンダーの内容がわからない場合は、TextBox に Binding.NotifyOnValidationError を設定し、Error 添付イベントを処理する必要があります。

于 2008-11-21T21:39:52.490 に答える