WPF自定义下拉框ComboBox样式

很多时候不知道控件样式的构成,可以上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&
  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值