wpf Combobox没有黑三角,鼠标移上去改变样式

原创 2015年07月09日 14:19:37

1.自己设计样式的效果

默认状态 

下拉框     


2.样式文件

 <Geometry x:Key="DownArrowGeometry">M 0 0 L 3.5 4 L 7 0 Z</Geometry>
        <Style x:Key="ComboBoxReadonlyToggleButton" 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="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" 
                                                        SnapsToDevicePixels="true">

                            <!--RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"-->

                            <!--<Grid HorizontalAlignment="Right" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">                            <Path x:Name="Arrow" Data="{StaticResource DownArrowGeometry}" Fill="Black" HorizontalAlignment="Center" Margin="3,1,0,0" VerticalAlignment="Center"/>                        </Grid>-->
                        </Microsoft_Windows_Themes:ButtonChrome>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid x:Name="MainGrid" SnapsToDevicePixels="true">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
                            </Grid.ColumnDefinitions>
                            <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1"                               PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
                                <Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="Shdw" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}">
                                    <Border x:Name="DropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
                                        <ScrollViewer x:Name="DropDownScrollViewer">
                                            <Grid RenderOptions.ClearTypeHint="Enabled">
                                                <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
                                                    <Rectangle x:Name="OpaqueRect" Fill="#252525" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}"/>
                                                </Canvas>
                                                <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                            </Grid>
                                        </ScrollViewer>
                                    </Border>
                                </Microsoft_Windows_Themes:SystemDropShadowChrome>
                            </Popup>
                            <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"                                      Style="{StaticResource ComboBoxReadonlyToggleButton}"></ToggleButton>
                            <ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}"                                          ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false"                                          Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"></ContentPresenter>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

          
3.总结

   在项目中应用wpf一年多后,才来认真研究样式的问题。以前都是略过啊略过。现在用Blend重写样式,才发觉随心所欲的感觉真好~!

1. ToggleButton一直弄不懂是什么东西,网上的解释好抽象。体现在Combobox上原来是


红色方框内的点击效果

2.  代码中注释掉的

RenderMouseOver,RenderPresse

这个是取消了鼠标移上去、按下去的效果

默认是这样的



注释掉的<Grid... 是黑色倒三角


如果应用到wpf工程,先要加引用Microsoft.Expression.Drawing.dll


相关文章推荐

WPF ComboBox样式

WPF ComboBox样式

WPF中ComboBox控件显示的样式设置

1、首先需要给ComboBox绑定一个集合 2、集合中的每一项是一个对象,比如是一个Student对象,需要在该类中添加一个静态DataTemplateKey类型的属性(必须是静态的)。如下:pub...

WPF Button 样式 鼠标移入发光

关于Echarts的formatter函数的自定义(图像上显示一组数据的图像,当鼠标移上去的时候显示五组数据)

前端使用echarts3实现tooltip的formatter函数的自定义,实现显示一组图像,tooltip里面显示多组数据...

鼠标移上去,弹出说明框,移开则消失

1、设置css样式: .rule-popup-box{display: none; position: absolute; top: 0; right: 0; z-index: 100; w...
  • ailo555
  • ailo555
  • 2016年07月26日 22:04
  • 1678

鼠标移上去显示

Home .clear { zoom:1; } .clear:after { content:''; display:block; clear:both; } figure { m...

鼠标移上去以中心为原点慢慢出现

Home .gallery1 { position: relative; } .gallery-grid { padding: 0; } body a { tran...

鼠标移上去文字出来.rar

  • 2012年07月21日 14:17
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wpf Combobox没有黑三角,鼠标移上去改变样式
举报原因:
原因补充:

(最多只允许输入30个字)