设置 ComboBox 选中项的高亮颜色

14

我需要更改ComboBox弹出列表中所选项目的高亮颜色。 我找到了几个教程来解释如何做到这一点,但它们都要使用我没有并且无法获得的Blend软件,或者涉及更改系统默认颜色-这对我来说似乎是一种hack。

有人能指导我需要覆盖的模板,或告诉我需要设置的属性吗?

2个回答

24

覆盖 SystemColors.HighlightBrushKey(如果需要,还可以覆盖 SystemColors.HighlightTextBrushKey):

<ComboBox>
    <ComboBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">Red</SolidColorBrush>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}">Blue</SolidColorBrush>
    </ComboBox.Resources>
    <ComboBoxItem>One</ComboBoxItem>
    <ComboBoxItem>Two</ComboBoxItem>
</ComboBox>

再说一遍,有没有一种不涉及更改系统颜色的方法来做到这一点? - Klay
3
你并没有改变系统颜色 - 你只是在 ComboBox 的范围内覆盖了它们。 - Kent Boogaart
我想我正在寻找我要更改的模板,因为这似乎是“正确”的方法。这对于将画笔设置为渐变色是否有效?如果我想在所选项目旁边显示图标怎么办?无论如何,我很感激您的帮助。 - Klay
1
“正确”的方法取决于您要实现的目标;)ComboBoxItem模板会获取这些画笔资源,因此如果您决定采用该路线,则必须重新设计模板。上面的示例中可以使用任何画笔(包括渐变)。如果您希望图标超出选择框的范围,则可能可以通过不重新设计模板来解决问题,但重新设计模板将是更好的解决方案。” - Kent Boogaart
4
顺便提一下,看起来在Windows 8上这个东西出了问题。 - Joel Barsotti
显示剩余2条评论

0

1
дҪ жҳҜеҰӮдҪ•еҫ—зҹҘжҲ–дәҶи§ЈеңЁComboBoxItemж ·ејҸдёӯзҡ„<Setter Property="Panel.Background" TargetName="Border" Value="{StaticResource CustomBrush1}"/>дёӯзҡ„вҖңPanelвҖқпјҹ - Jayson Ragasa
@JaysonRagasa,我知道这已经很老了,但是以防你或其他读者没有发现,你可以在Visual Studio中访问默认的WPF控件模板:如何在Visual Studio中提取默认控件模板? - Sheridan

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