当ComboBox悬停时,更改ComboBoxItem的前景色

时间:2015-01-14 21:15:35

标签: c# wpf xaml combobox

目前,我正在设计WPF控件。这就是我的自定义<Button>看起来徘徊的方式。

button

这就是<ComboBox>当鼠标悬停在它上面时的样子。

combobox

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

现在,它就像一个魅力。