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模板