一个WPF列表框的无效高亮颜色设置为活动高亮颜色(Setting the Inactive High

2019-09-16 12:33发布

我试图做一个列表框,其中突出显示的项目看起来是一样的不管列表框具有焦点与否。

基本上我想设置SystemColors.ControlBrushKey颜色属性是一样的SystemColors.HighlightBrushKey颜色。

我以为我可以使用以下命令:

<ListBox>
    <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                         Color="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
    </ListBox.Resources>
</ListBox>

但其实这引发以下错误:

System.Windows.Markup.XamlParseException:设置属性“System.Windows.Media.SolidColorBrush.Color”引发了异常。 ---> System.ArgumentException:“#FF3399FF”不是属性的有效值“颜色”

如果设置了Color="#FF3399FF"它工作正常。

我究竟做错了什么?

Answer 1:

感谢尼古拉斯·W代表指着我在正确的方向 - 在这里是为ListBox的完整代码:

<ListBox Width="200" Height="200">
    <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                         Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" />
    </ListBox.Resources>
    <ListBox.ItemContainerStyle>
        <Style>
            <Style.Triggers>
                <Trigger Property="Selector.IsSelected" Value="True">
                    <Setter Property="TextElement.Foreground" Value="White"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBoxItem IsSelected="True">Item A</ListBoxItem>
    <ListBoxItem>Item B</ListBoxItem>
    <ListBoxItem>Item C</ListBoxItem>
</ListBox>


文章来源: Setting the Inactive Highlight Colour of a WPF ListBox to the Active Highlight Colour