Menu菜单,在软件中使用率很高的一个控件。包含具有层级关系的一个或多个MenuItem作为子菜单。

今天就来分享一个定义的菜单样式。

看一下效果图:

下面就来看看代码:

本次代码,全部都在MainWindow.xaml内:

<Window x:Class="wpfcore.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:wpfcore" xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"mc:Ignorable="d"Background="#2D2D30"UseLayoutRounding="True"Title="MainWindow" Width="820" Height="340"><Window.Resources><Style x:Key="sep" TargetType="{x:Type Separator}"><Setter Property="Margin" Value="0,3" /><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Separator}"><Border Height="1" BorderThickness="1" BorderBrush="#999999" /></ControlTemplate></Setter.Value></Setter>
</Style><Style TargetType="{x:Type MenuItem}"><Setter Property="Foreground" Value="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Menu}}}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type MenuItem}"><Border x:Name="Border"  Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1"><Grid><Grid.ColumnDefinitions><ColumnDefinition x:Name="ColIcon" Width="Auto" SharedSizeGroup="MenuItemIconColumnGroup"/><ColumnDefinition Width="Auto" SharedSizeGroup="MenuTextColumnGroup"/><ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup"/><ColumnDefinition x:Name="ColNext" Width="auto"/></Grid.ColumnDefinitions><ContentPresenter Grid.Column="0"Margin="5 0"x:Name="Icon"VerticalAlignment="Center" ContentSource="Icon"/><Grid Grid.Column="0" Visibility="Hidden" Margin="5 0" x:Name="GlyphPanel"VerticalAlignment="Center"><Viewbox VerticalAlignment="Center" FlowDirection="LeftToRight" Width="18" Height="18"><Path Fill="{TemplateBinding Foreground}" Data="M422.36247 839.786465c-13.320377 13.421684-34.909068 13.421684-48.126091 0l-10.69355-10.800997 0 0-11.398608-11.502985-50.145074-50.544163c-0.097214-0.201591 0-0.500397-0.201591-0.604774L72.380494 533.085224c-13.320377-13.421684-13.320377-35.218106 0-48.535413l72.132854-72.842005c13.319353-13.408381 34.907021-13.408381 48.224328 0l205.814506 209.252815L831.363631 184.208419c13.218046-13.414521 34.806737-13.414521 48.124044 0l72.134901 72.842005c13.317307 13.408381 13.317307 35.113729 0 48.52211L422.36247 839.786465 422.36247 839.786465z"/></Viewbox></Grid><ContentPresenter Grid.Column="1"Margin="{TemplateBinding Padding}"x:Name="HeaderHost"VerticalAlignment="Center"RecognizesAccessKey="True"ContentSource="Header"/><ContentPresenter Grid.Column="2"Margin="8 0"x:Name="IGTHost"ContentSource="InputGestureText"VerticalAlignment="Center"/><Grid Grid.Column="3" Margin="5 0" x:Name="ArrowPanel" VerticalAlignment="Center"><Path x:Name="ArrowPanelPath" HorizontalAlignment="Right" VerticalAlignment="Center" Fill="{TemplateBinding Foreground}" Data="M0,0 L0,8 L4,4 z"/></Grid><Popup IsOpen="{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}"Placement="Right" x:Name="SubMenuPopup" Focusable="false"><Border x:Name="SubMenuBorder" BorderBrush="#999999" BorderThickness="1" Padding="2,2,2,2"><Grid x:Name="SubMenu" Grid.IsSharedSizeScope="True"><StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle"/></Grid></Border></Popup></Grid></Border><ControlTemplate.Triggers><Trigger Property="Role" Value="TopLevelHeader"><Setter Property="Padding" Value="6 1"/><Setter Property="Background" Value="Transparent"/><Setter Property="Placement" Value="Bottom" TargetName="SubMenuPopup"/><Setter Property="MinWidth" Value="0" TargetName="ColIcon"/><Setter Property="Width" Value="Auto" TargetName="ColNext"/><Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/><Setter Property="Visibility" Value="Collapsed" TargetName="GlyphPanel"/><Setter Property="Visibility" Value="Collapsed" TargetName="IGTHost"/><Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/></Trigger><Trigger Property="IsHighlighted" Value="true"><Setter Property="Background" Value="Green" TargetName="Border"/></Trigger><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsHighlighted" Value="True"/><Condition Property="Role" Value="TopLevelHeader"/></MultiTrigger.Conditions><MultiTrigger.Setters><Setter Property="Background" Value="Green" TargetName="Border"/></MultiTrigger.Setters></MultiTrigger><Trigger Property="Role" Value="TopLevelItem"><Setter Property="Padding" Value="6 1"/><Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/></Trigger><Trigger Property="Role" Value="SubmenuHeader"><Setter Property="Padding" Value="5 2"/></Trigger><Trigger Property="Role" Value="SubmenuItem"><Setter Property="Padding" Value="5 2"/><Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/></Trigger><Trigger Property="Icon" Value="{x:Null}"><Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/></Trigger><Trigger Property="IsChecked" Value="true"><Setter Property="Visibility" Value="Visible" TargetName="GlyphPanel"/><Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/></Trigger><Trigger Property="IsEnabled" Value="false"><Setter Property="Foreground" Value="LightGray"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter>
</Style><Image x:Key="icon" x:Shared="False"  Width="22" Height="22" Source="/icon.jpg" /></Window.Resources><Grid><Menu HorizontalAlignment="Left" VerticalAlignment="Top"FontSize="16" Foreground="#F6F6F6" Background="Transparent"><MenuItem  Header="文件(F)"><MenuItem Header="新建(N)"><MenuItem Header="项目(P)..." InputGestureText="Ctrl+Shift+N"/><MenuItem Header="存储库(R)..."/><MenuItem Header="文件(F)..." InputGestureText="Ctrl+N"/><MenuItem Header="从现有代码创建项目(E)..."/></MenuItem><MenuItem Header="打开(O)"/><MenuItem Header="克隆存储库(E)..." Icon="{StaticResource icon}"/><MenuItem Header="启动窗口(W)" Icon="{StaticResource icon}"/><Separator Style="{StaticResource sep}"/><MenuItem Header="添加(D)"/><MenuItem Header="关闭(C)"/><MenuItem Header="关闭解决方案(T)"/><Separator Style="{StaticResource sep}"/><MenuItem Header="退出(X)" InputGestureText="Alt+F4"/></MenuItem><MenuItem  Header="文件(F)"><MenuItem Header="新建(N)"><MenuItem Header="项目(P)..." InputGestureText="Ctrl+Shift+N"/><MenuItem Header="存储库(R)..."/><MenuItem Header="文件(F)..." InputGestureText="Ctrl+N"/><MenuItem Header="从现有代码创建项目(E)..."/></MenuItem><MenuItem Header="打开(O)"/><MenuItem Header="克隆存储库(E)..." Icon="{StaticResource icon}"/><MenuItem Header="启动窗口(W)" Icon="{StaticResource icon}"/><Separator Style="{StaticResource sep}"/><MenuItem Header="添加(D)"/><MenuItem Header="关闭(C)"/><MenuItem Header="关闭解决方案(T)"/><Separator Style="{StaticResource sep}"/><MenuItem Header="退出(X)" InputGestureText="Alt+F4"/></MenuItem><MenuItem  Header="文件(F)"><MenuItem Header="新建(N)"><MenuItem Header="项目(P)..." InputGestureText="Ctrl+Shift+N"/><MenuItem Header="存储库(R)..."/><MenuItem Header="文件(F)..." InputGestureText="Ctrl+N"/><MenuItem Header="从现有代码创建项目(E)..."/></MenuItem><MenuItem Header="打开(O)"/><MenuItem Header="克隆存储库(E)..." Icon="{StaticResource icon}"/><MenuItem Header="启动窗口(W)" Icon="{StaticResource icon}"/><Separator Style="{StaticResource sep}"/><MenuItem Header="添加(D)"/><MenuItem Header="关闭(C)"/><MenuItem Header="关闭解决方案(T)"/><Separator Style="{StaticResource sep}"/><MenuItem Header="退出(X)" InputGestureText="Alt+F4"/></MenuItem></Menu></Grid>
</Window>

ok,以上代码直接CV就能用喽。。。

如果喜欢,点个赞呗~

WPF 修改(优化)Menu菜单的样式相关推荐

  1. android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...

    Windows系统发展至今,文件夹的颜色和样式始终是没有太多的变化,一直是一成不变的shi黄色! 尽管我们可以通过右键>属性>自定义>来修改文件夹的图标,但这种方法不仅需要我们自己去 ...

  2. wpf修改theme中的样式_WPF Mahapps.Metro 设置主题样式

    /// /// 设置App样式 /// /// 窗口标题栏样式 /// 背景样式 private void ChangeTheme(string accentName, string themeNam ...

  3. android定制你自己的menu菜单,修改menu字体颜色

    http://bbs.hiapk.com/thread-2581971-1-1.html 原帖来自ligux~~~~傻子啊傻子 如上次教程一样,准备工作是java环境以及反编译工具,还有你从自己ROM ...

  4. android menu菜单样式,Android Menu 的样式定制

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 其实做原生 Android 开发这么久,对 Android 的原生控件还是比较满意的,毕竟 Material Desig ...

  5. NavMenu 导航菜单导航样式修改

    样式修改,希望可以帮到大家. .el-menu-demo {background: none; } .el-menu--horizontal > .el-submenu .el-submenu_ ...

  6. 利用pagespeed插件优化网站css层叠样式文件

    "不务正业"的google最近发布了pagespeed插件和apache 2专有的mod_pagespeed页面优化模块:pagespeed插件目前仅有firefox版的,该插件要 ...

  7. WPF 性能优化建议

    本章讲述:WPF 性能优化建议 20180930 WPF性能优化问题:运行软件发现CPU使用率很大(80%-95%),程序中含有委托,线程,定时器的处理,之前优化时,主要优化线程和定时器相关线程方面的 ...

  8. android+打开菜单,Android制作微信app顶部menu菜单(ActionBar)

    使用微信APP的小伙伴对于微信的ActionBar一定有印象,今天就带领大家一起实现以下这个效果. 第一步打开我们的开发工具,这里我使用的是Eclipse+ADT插件,然后创建我们的工程,这里选择An ...

  9. RecycleView实现ListView和GridView,用menu菜单分别显示

    RecycleView实现ListView和GridView的效果显示图: RecycleView的实现步骤: 1.搭建环境:由于RecycleView是在android5.0之后出来的,用来代替li ...

最新文章

  1. MongoDB时间类型
  2. ALFNet行人检测
  3. 使用@Autowired注入RedisTemplate时报java.lang.NullPointerException
  4. 微软技术直通车(第三期) 之 人工智能
  5. java使用教程——组件及事件处理——常用组件与布局
  6. linux内核启动以及文件系统的加载过程
  7. vue中使用FullCalendar日历组件
  8. 分享一年定级资深前端,与你分享他的完整学习过程
  9. rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]
  10. 移动开发者走向全能开发者的五大技能
  11. 《移动通信》学习总结
  12. 决定转移ubuntu
  13. 基于Java的仓库管理系统
  14. php集成环境总结(php新手)
  15. 优秀的程序员是不用过圣诞节的
  16. 光照度和光强度的区别
  17. swiper设置autoplay不起作用
  18. 【设计教程】在PS里面制作简单的下雨效果!
  19. ubuntu安装微信,解决网页版微信不能登陆问题
  20. CISCO服务器配置RAID步骤

热门文章

  1. day4----函数-闭包-装饰器
  2. 03:数据结构 栈、队列、链表与数组
  3. yii2笔记: 单元测试
  4. C# Socket编程笔记(转)
  5. 复制一个文件夹中的所有文件和文件夹的java程序实现
  6. SQL server 2000安装时提示我”以前的某个程序安装已在安装计算机上创建挂起的文件操作....”...
  7. centos 下安装man手册
  8. Linux命令大总结(早期学习时的笔记)
  9. Swoole入门指南:PHP7安装Swoole详细教程(一)
  10. 游戏上线... 记录下...