C#WPF ComboBox鼠标颜色
当鼠标hover在我的ComboBox上时,我的ComboBox的背景会产生一对可怕的蓝色/浅蓝色。 我在这里尝试了解决方案: ComboBox鼠标颜色 , WPF Combobox鼠标结束 , 如何在鼠标hover上设置ComboBox背景样式? 或者WPFcombobox在togglebutton上默认hover颜色 ,但它不会改变任何东西,我仍然在hover时获得默认颜色。
有什么建议 ?
谢谢大家,Demasiado。
这是XAML代码:
<Window x:Class="Homepage.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
您的问题来自ToggleButton模板中的ButtonChrome。 从ToggleButton中删除它。
ComboBox -> ToggleButton -> ButtonChrome
脚步 :
1)打开Expression Blend并编辑ComboBox样式的副本,这将为您提供ComboBox的样式+它的模板及其所有的TemplateParts,其中有问题的ToggleButton。
2)找到ToggleButton,它的样式名为“ComboBoxReadonlyToggleButton”。
3)在“ComboBoxReadonlyToggleButton” 中用 边框替换主题:ButtonChrome (如下面第3段代码所示)
ComboBox的默认模板(Simplified!):
.....
切换按钮样式+模板(简化!)。
您需要做的是覆盖默认的ComboBox模板,并通过将BorderChrome替换为Border来编辑切换按钮的样式:
您可以在ComboBox
范围内覆盖SystemColors.HighlightBrushKey
:
整个XAML可以是这样的:
您的评论的后续内容:
忽略viewmodel
和我的ItemSource
你应该使用自己的,这只是为了演示。
至于你的评论
我无法得到任何工作
我建议您创建一个新项目并仅测试此XAML(当然还有您的ItemSource)并查看是否可以获得所需的结果。 当你得到它时,你可以移动到你的真实项目,看看样式在哪里变化,问题出在哪里。
编辑#2:
为了改变ToggleButton
的颜色,我认为最好覆盖整个ComboBox
样式。
我用了
其余的代码和样式取自这里 。
我建议你也阅读这篇文章 。
在我的测试项目的ComboBox中没有项目。 我只是将鼠标hover在它上面,整个控件都是蓝色的。 这是.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// /// Logique d'interaction pour MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } }
这是xaml:
在窗口资源中重新定义comboxItem模板