将WPF ListBox的非活动高亮颜色设置为活动高亮颜色

3
我正在尝试制作一个ListBox,在其中高亮显示的项目无论该ListBox是否具有焦点都看起来相同。 基本上,我想要将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'的有效值

如果我设置Color="#FF3399FF",它就可以正常工作。

我做错了什么?


3
我认为你试图将“Color”属性设置为“Brush”,而不是“Color”。 - Nicholas W
是的,我也这么想,但现在你确认了我的怀疑,我才注意到我使用了HighlightBrushKey而不是HighlightColorKey facepalm 我会发布完整的工作示例。谢谢! - CatBusStop
1个回答

5

感谢Nicholas 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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接