很多时候不知道控件样式的构成,可以上msdn查看控件的模板与样式。
ComboBox下拉框主要放内容的是Popup控件,有三种显示items的方式:
① 默认的ItemsPresenter 相当于占位符作用,竖向显示
② ItemsPanel 竖向/横向显示: 使用StackPanel/WrapPanel
③ ItemContainerStyle items样式可自定义(包括鼠标滑过等的效果)
(代码可直接复制下来使用)
例子以上②③都用到了:
下拉框被选中时蓝色,鼠标滑动时粉色;
下拉框不带阴影,内容高度40px,垂直居中,内容过多会自动生成滚动条。
上代码————————————>>>>>>>
【资源文件】
注: IsHighlighted - 选中后高亮的颜色 ; IsSelected - 被选中的颜色;
<!-- ComboBoxItem样式 -->
<Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Height" Value="40"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border Name="Back" Background="Transparent" BorderThickness="0,0,0,0" BorderBrush="#FF6A6A6A" >
<ContentPresenter ContentSource="{Binding Source}" Margin="{TemplateBinding Padding}" HorizontalAlignment="Left" VerticalAlignment="Center"></ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Back" Property="Background" Value="Pink"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Back" Property="Background" Value="#FFCBE3FE"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ToggleButton样式(折叠展开按钮) -->
<Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="ClickMode" Value="Press"/>
<Setter Property&