我正在创建一个WPF应用程序,其中连续生成多个ListView选项(类似于iTunes浏览器).问题是默认的非活动选择颜色太浅.(见下文)
如何更改此颜色,以便我的非活动列表视图如下所示?(见下文)
使用Style
类似的方法覆盖默认的SystemColor :
小智.. 61
改变SystemColors.ControlBrushKey
不适合我,我不得不改变
SystemColors.InactiveSelectionHighlightBrushKey
所以代替:
我不得不使用:
我希望我能不止一次地回答这个问题,因为我已多次试图解决这个问题.我也使用.NET 4.5并尝试了所有其他答案但没有成功. (2认同)
in .net 4.5 FrameworkCompatibilityPreferences.AreInactiveSelectionHighlightBrushKeysSupported字段控制用于突出显示的颜色. (2认同)
Kent Boogaar.. 57
该ListBox
模板使用系统颜色称为ControlBrush
设置无效高亮颜色.因此,您可以覆盖该颜色:
Red
对于.NET 4.5,看起来他们更改了密钥 - 请参阅下面的@ user672951答案. (6认同)
这样做有问题.它不允许您为应用程序设置外观,如果您通过更改Windows主题来更改系统颜色,它将恢复为 (4认同)
Thies.. 20
在某些情况下,答案将解决问题,但不是理想的,因为它在控制被禁用/只读时会中断,并且它也会覆盖颜色方案,而不是利用它们.我的建议是在ListBox标签中添加以下内容:
这将做什么是在选择它时(无论控制状态如何)在列表框项目上设置突出显示背景颜色.
我的回答是基于已经给出的答案的帮助,以及以下博客:http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx
改变SystemColors.ControlBrushKey
不适合我,我不得不改变
SystemColors.InactiveSelectionHighlightBrushKey
所以代替:
我不得不使用:
该ListBox
模板使用系统颜色称为ControlBrush
设置无效高亮颜色.因此,您可以覆盖该颜色:
Red
在某些情况下,答案将解决问题,但不是理想的,因为它在控制被禁用/只读时会中断,并且它也会覆盖颜色方案,而不是利用它们.我的建议是在ListBox标签中添加以下内容:
这将做什么是在选择它时(无论控制状态如何)在列表框项目上设置突出显示背景颜色.
我的回答是基于已经给出的答案的帮助,以及以下博客:http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx
您必须覆盖SystemColors的某些属性.看一下SystemColors Class(MSDN).InactiveSelectionHighlightBrushKey有更多属性,例如InactiveSelectionHighlightTextBrushKey,它会影响文本的颜色.