【发布时间】:2011-08-01 23:56:43
【问题描述】:
我正在尝试为 WPF 组合框创建自定义样式,但无论何时,下拉菜单都不会打开,我想使用从我的按钮样式创建的以下 XAML 代码,但将其移植到与组合框控件一起使用,我该怎么做才能让下拉菜单显示出来,并让我能够更改鼠标悬停的颜色。
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="1"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<!--TODO: Set the right colors-->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FFC6C6C6" />
<Setter Property="Foreground" Value="#FF333333" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="#FF666666" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#FFCCCCCC"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
【问题讨论】:
-
你的目标是什么?是让 ComboBox 切换按钮与应用程序中的其他按钮具有相同的样式,还是为每个 ComboBoxItem 添加鼠标悬停颜色?如果是后者,您可以通过设置项目本身的样式来做到这一点。
-
否则,我建议查看默认的 ComboBox 控件模板并修改您需要的内容,因为它是一个比按钮复杂得多的控件:msdn.microsoft.com/en-us/library/ms752094(v=vs.85).aspx
-
我希望将上面的样式控制模板重新编码以与组合框一起使用,包括边框等。如果有更简单的方法可以删除蓝色的鼠标悬停颜色,那么请成为我的客人
-
@crazyarabian:该页面上的模板是模板外观的示例,而不是默认模板。
-
@H.B.:感谢您澄清这一点;我想我没有足够关注