首页 > 其他分享 >WPF MenuItem 样式

WPF MenuItem 样式

时间:2023-03-15 19:24:14浏览次数:47  
标签:github 自定义 样式 代码 MenuItem WPF

一、前言

默认的MenuItem样式比较普通,这次自定义MenuItem的样式也只是对MenuItem的颜色风格进行变化。需要其他功能的变化,大家可以根据样式代码进行扩展。

MenuItem的样式代码:

复制代码
<!--MenuItem-->
        <Style TargetType="MenuItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="MenuItem">
                        <Grid ToolTip="{TemplateBinding Header}" Height="24" Background="#FBFBFD" Width="{TemplateBinding Width}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="30" />
                                <ColumnDefinition Width="*" MinWidth="80"/>
                            </Grid.ColumnDefinitions>
                            <Border Background="#EBEBED"/>
                            <Border x:Name="_border"   Grid.ColumnSpan="2"/>
                            <Image x:Name="_imgicon" Width="12" Height="12" Stretch="Uniform" Source="{Binding Icon,RelativeSource={RelativeSource TemplatedParent}}" />
                            <TextBlock Foreground="#2D2D30" Grid.Column="1" Margin="5 0 15 0"  VerticalAlignment="Center" x:Name="_txt" Text="{Binding Header,RelativeSource={RelativeSource TemplatedParent}}" />
                            <Path  Visibility="Collapsed" x:Name="_path" Grid.Column="1" HorizontalAlignment="Right"  Margin="5 13 5 0"   Data="M0,4 4,0 0,-4 z" Fill="#7E8A92"/>
                            <Popup  Placement="Right" x:Name="SubMenuPopup" AllowsTransparency="True"   Focusable="False" IsOpen="{TemplateBinding IsSubmenuOpen}" >
                                <ScrollViewer   ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                                    <Border Background="#ffc787" Name="SubmenuBorder" BorderBrush="LightGray" BorderThickness="1"  SnapsToDevicePixels="True"    >
                                        <StackPanel   IsItemsHost="True"   KeyboardNavigation.DirectionalNavigation="Cycle" />
                                    </Border>
                                </ScrollViewer>
                            </Popup>

                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="HasItems" Value="true">
                                <Setter TargetName="_path" Property="Visibility" Value="Visible"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter TargetName="_border" Property="Background" Value="#ffc787"/>
                                <Setter TargetName="_txt" Property="Foreground" Value="White"/>
                                <Setter TargetName="_path" Property="Fill" Value="White"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="_txt" Property="Foreground" Value="Gray"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
复制代码

引用示例:

复制代码
 <Grid>
            <Grid.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="菜单一">
                        <MenuItem Header="子菜单"/>
                    </MenuItem>
                    <MenuItem Header="菜单二"></MenuItem>
                </ContextMenu>

            </Grid.ContextMenu>
        </Grid>
复制代码

显示效果:

 

所有代码已经上传到github:https://github.com/cmfGit/WpfDemo.git

标签:github,自定义,样式,代码,MenuItem,WPF
From: https://www.cnblogs.com/lzjsky/p/17219689.html

相关文章

  • WPF 实现界面动态布局
    参考:WPF实现界面动态布局-码农教程(manongjc.com)【翻译】使用WPF进行拖拽和放置【DragandDropinWPF】-LiuHong'sBlog(lofter.com)......
  • 【ArcPy】输出Samples工具箱样式的面坐标txt文件
    基于ArcGIS10.1,别有用处。importarcpylyr=file=r"C:\Users\dell\Desktop\dapo.txt"withopen(file,'w')astxt:txt.write('Polygon\r\n')witharcpy.da.......
  • WPF TreeView 样式
    一、前言TreeView控件在项目中使用比较频繁,普通的TreeView并不能满足我们的需求。因此我们需要滴对TreeView进行改造。下面的内容将介绍仿QQ联系人TreeView样式及TreeView......
  • VUE基础:组件CSS样式、props属性
    VUE基础部分组件css样式例子<stylelang="less">//这里记得改名,然后给div也加名字.comName-container{padding:1020px20px;background-color:lightskyblue......
  • New!界面控件DevExpress WPF 2023产品路线图曝光
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • WPF Binding属性
    Binding可以让前台和后台的属性绑定在一起。实现实时更新。比如前台xaml<StackPanel><TextBoxx:Name="txtBox"BorderBrush="Black"Margin="5"/>......
  • 覆盖element-ui原生样式
    使用深度选择器/deep/进行作用域穿透,不需要去掉style 标签 scoped 属性。只需要在父类class下的element-ui组件class前加上/deep/,就可以修改默认样式如下所示改变原......
  • element-table 相关样式修改
    1.表格整体背景色修改/*表格整体背景色*/::v-deep.el-table,::v-deep.el-table__expanded-cell{background-color:transparent!important;}2.表格内tr......
  • WPF 自定义ComboBox样式,自定义多选控件
    一、ComboBox基本样式ComboBox有两种状态,可编辑和不可编辑状态。通过设置IsEditable属性可以切换控件状态。先看基本样式效果:基本样式代码如下:<!--ComboBox-->......
  • 相对定位与绝对定位如何让页面样式居中的?
        position 定位允许您从正常的文档流布局中取出元素,并使它们具有不同的行为,例如放在另一个元素的上面,或者始终保持在浏览器视窗内的同一位置。CSS中定位分类有四......