悬停 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>
现在,它就像一个魅力。
目前,我正在设计 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>
现在,它就像一个魅力。