0

一部のデータが「無視」されているときにテキストをグレー表示したいのですが、アイテムが選択されたときにグレー表示になりたくありません。(具体的には、ハイ コントラスト モードで、色を灰色の値に設定すると、テキストが判読できなくなります)

これは私の最初の試みでした。

<Style>
<!-- .... -->
<Setter Property="Control.Foreground"
        Value="{DynamicResource {x:Static SystemColors.ControlTextColor}}" />
<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <!-- Set gray text when not selected, and ignored. -->
            <Condition Property="ListBoxItem.IsSelected" Value="false" />
            <Condition Binding="{Binding Ignored}" Value="true" />
        </MultiDataTrigger.Conditions>
        <Setter Property="Control.Foreground"
                Value="{DynamicResource {x:Static SystemColors.GrayTextColor}}" />
    </MultiDataTrigger>
</Style.Triggers>
</Style>

MultiDataTriggerBinding を条件に設定する必要があるため、これは実行時に失敗します。(少なくとも、それが失敗の理由だと思います。)

この問題を回避するにはどうすればよいですか?

4

2 に答える 2

3

スタイルを使用している正確な場所に応じて、RelativeSource バインディングを使用して、最初の Condition を変換して ListBoxItem.IsSelected プロパティにバインドできます。

于 2013-09-09T21:23:03.367 に答える
2

アンドリューの答えに賛成しました。次のように試してみますが、 を使用して のIsSelectedプロパティにバインドしたいと思います。ListBoxItemRelativeSource

<Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=Self}}" Value="false" />

Styleで aResourceDictionaryを使用し、プロパティListBoxを設定してa で使用すると、うまくいきました。ItemContainerStyle

于 2013-09-09T21:42:20.187 に答える