悬停 ComboBox 时更改 ComboBoxItem 的前景色

Change foreground color of ComboBoxItem when ComboBox is hovered

目前,我正在设计 WPF 控件的样式。这就是我的自定义 <Button> 悬停的样子。

这就是 <ComboBox> 鼠标悬停时的样子。

简单地说,我希望能够在悬停整个 ComboBox 时更改当前选定 ComboBoxItem 的前景色。在此示例中,我希望在 <Button> 控件上使用类似的黄色。

问题是,<ComboBox> 的 ComboBox 项和切换按钮有不同的 ControlTemplates。我不知道如何在这两者之间进行交互。

<ComboBox> 的模板非常大,所以我不会在这里 post。此外,如果不需要解释问题,则不必 post 完整答案。

好的,我找到了解决办法。您需要编辑默认的 ComboBox 模板。

在 Visual Studio 2013 中,您可以通过在 ComboBox 上单击鼠标右键 -> 编辑模板 -> 编辑副本来在 Designer 中获取默认模板...

<ControlTemplate x:Key="ComboBoxTemplate" TargetType="{x:Type ComboBox}"> 中,您必须添加以下触发器:

<ControlTemplate.Triggers>
...
<Trigger Property="IsMouseOver" TargetName="toggleButton" Value="true">
    <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="Yellow" />
</Trigger>
...
</ControlTemplate.Triggers>

此外,将样式应用于 ComboBoxItem:

<Style TargetType="{x:Type ComboBoxItem}">
    <Setter Property="Foreground" Value="Black"/>
</Style>

现在,它就像一个魅力。