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>

这在运行时失败,因为MultiDataTrigger需要根据其条件设置绑定。(至少,我认为这就是它失败的原因。)

我该如何解决这个问题?

4

2 回答 2

3

根据您使用 Style 的确切位置,您可以使用 RelativeSource 绑定将第一个 Condition 转换为绑定到 ListBoxItem.IsSelected 属性。

于 2013-09-09T21:23:03.367 回答
2

赞成安德鲁的回答,我认为你想绑定到, using的IsSelected属性,尽管我会这样尝试:ListBoxItemRelativeSource

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

这对我有用,Style在 a 中使用 a ,并通过设置属性ResourceDictionary在 a 中使用它。ListBoxItemContainerStyle

于 2013-09-09T21:42:20.187 回答