WPF 修改(优化)Menu菜单的样式

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就能用喽。。。

如果喜欢,点个赞呗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世上最牛博士论文是这样的!

全世界只有3.14 % 的人关注了数据与算法之美第五牛博士论文就是在还没答辩之前已经发表在最好的期刊上&#xff0c;而且鉴于论文很长&#xff0c;该期刊必须像小说一样连载。实例&#xff1a;张五常博士论文《佃农理论》&#xff0c;当年在《法和经济学杂志》上连载四期。第四牛…

grep和egrep的一些简单用法

首先介绍grep的一些常见用法&#xff1a; grep&#xff1a;根据模式搜索文本&#xff0c;并将符合模式的文本行显示出来。 其基本格式为&#xff1a;grep [options] PATTERN [FILE...] 即&#xff1a;grep [选项] 匹配模式 [文件...]&#xff1b;其中&#xff0c;中括号表示该选…

WPF显示富文本emoji表情+文本(类似微信)

祝大家端午节安康&#xff01;WPF开发者QQ群&#xff1a; 340500857 前言 有小伙伴需要实现类似微信一样的气泡聊天emoji表情文本。欢迎转发、分享、点赞&#xff0c;谢谢大家~。 效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、EmojiAndTextControl…

oracle未找到时区,Oracle ADF 未找到时区错误

最近在运行项目的时候,发现了一个问题.在初始化数据的时候,后台会报错,<_handleexception> ADF_FACES-60098:Faces 生命周期在阶段RENDER_RESPONSE 6中接收到未处理的异常错误oracle.jbo.JboException: JBO-29000: 捕获到意外的异常错误: java.sql.SQLDataException, msg…

要孩子逻辑清晰、善于思考,别忽视空间想象力的游戏锻炼!

▲数据汪特别推荐点击上图进入玩酷屋在之前的文章时&#xff0c;马斯提到数学存在一种现象叫“梯次掉队”&#xff0c;原因在于孩子的数学思维地基没有打牢。&#xff08;传送门&#xff09;提到初中孩子需要空间想象能力时&#xff0c;很多父母疑惑为何需要&#xff1f;关于这…

ORACLE数据加载加本,使用oracle sqlldr加载数据

oracle sqlldr 实验tab 分隔处理&#xff0c;空格分隔处理&#xff0c;逗号分隔处理日期列处理截断处理包含双引号处理列为空处理1.数据文件data.txt2012-01-01 10:01:01.001 "1"a"cc"2012-02-01 10:01:01.002 "2"bc"dd"2012-03-01 10…

ML.NET Cookbook:(16)什么是规范化?为什么我需要关心?

在ML.NET中&#xff0c;我们公开了许多参数和非参数算法[1]。通常&#xff0c;参数学习器对训练数据持有一定的假设&#xff0c;如果不满足这些假设&#xff0c;训练就会受到极大的阻碍&#xff08;有时甚至完全不可能&#xff09;。最常见的假设是所有特征的值大致相同&#x…

mysql查看当前连接数

命令&#xff1a; show processlist; 如果是root帐号&#xff0c;你能看到所有用户的当前连接。如果是其它普通帐号&#xff0c;只能看到自己占用的连接。 show processlist;只列出前100条&#xff0c;如果想全列出请使用show full processlist; mysql> show proce…

公摊面积取消闹乌龙,历史学家李学勤逝世,微软员工抗议国防大单,前摩拜CEO后花68万上学,这就是今天的大新闻。...

今天是2月25日农历正月廿一今天星期一大家看起来都好像很兴奋下面是今天的大新闻“公摊面积”要取消? 央视&#xff1a;这是错误理解(今日头条)近日有关“公摊面积”的新闻被刷屏。那么&#xff0c;这是否意味着&#xff0c;住宅交易面积将从建筑面积变为套内面积&#xff1f;…

oracle取位置,获取oracle trace文件路径

10g:/* 11g依然有效 */SELECT d.VALUE|| /|| LOWER (RTRIM (i.instance, CHR (0)))|| _ora_|| p.spid|| .trctrace_file_nameFROM (SELECT p.spidFROM sys.v$mystat m, sys.v$session s, sys.v$process pWHERE m.statistic# 1 AND s.sid m.sid AND p.addr s.paddr) p,(SE…

MySQL 删除数据的最好的方式

1 Drop table 命令 DROP TABLE 这个命令会删除整个表和数据&#xff0c;删除之后你就不能还原会之前的数据结构和数据了 2 DELETE * FROM Table DELETE * FROM Table 这个语句会移除数据&#xff0c;只留下自动增长的值&#xff08;id&#xff09;和其余的表结构。如果表很大那…

快手春节活动奖励未到账,被羊毛党投诉上了全国12315平台

全世界只有3.14 % 的人关注了数据与算法之美在这个获客成本越来越高的互联网时代下&#xff0c;通过现金激励的方式来拉新已经成为众多中国互联网公司的惯用手法了。今年春节&#xff0c;短视频公司快手就推出了“上快手&#xff0c;分6亿现金”的红包活动。在活动期间&#xf…

php 异常 重试,Python中异常重试的解决方案详解

前言大家在做数据抓取的时候&#xff0c;经常遇到由于网络问题导致的程序保存&#xff0c;先前只是记录了错误内容&#xff0c;并对错误内容进行后期处理。原先的流程&#xff1a;def crawl_page(url):passdef log_error(url):passurl ""try:crawl_page(url)except:…

通过脚本案例学习shell(二) --- 通过线性显示/etc/passwd内容了解while read用法

通过脚本案例学习shell&#xff08;二&#xff09;--- 通过线性显示/etc/passwd内容了解while read用法 版权声明&#xff1a; 本文遵循“署名非商业性使用相同方式共享 2.5 中国大陆”协议您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品您可以根据本…

上几个WebAPI就算微服务架构?Too Young!

毋庸置疑&#xff0c;当下是微服务云原生的时代&#xff0c;这是最坏的时代&#xff0c;也是最好的时代&#xff01;机遇和挑战并行&#xff0c;技术人之间的差距在逐渐拉到&#xff01;两极分化严重早在2015年&#xff0c;微服务就已经被诸多大企业认可和推行&#xff0c;被称…

雨雪出行伴侣,优质PVC时尚鞋套,防滑/防水更耐磨

▲数据汪特别推荐点击上图进入玩酷屋随着消费升级越来越多的人愿意购买价格不菲的鞋款大街小巷里涌现出越来越多的Sneakerhead&#xff08;俗称&#xff1a;鞋子发烧友&#xff09;就比如小木每次刚入手一双新鞋就高高兴兴穿出门然而终究免不了碰上“新鞋魔咒”再怎么小心都会被…

mac下好用的php环境变量,php-mac系统 环境变量设置

php-mac环境变量设置sudo vi ~/.bash_profile# 添加一行。注意 PHP5.4.10 修改成你正在运行的 PHP 版本目录名称export PATH"/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"# 保存&#xff0c;退出# 运行一下 .bash_profile 文件. .bash_profile# 确认当前正在运行…

poj 2411 Mondriaan's Dream

状态压缩DP 经典覆盖问题&#xff0c;输入n和m表示一个n*m的矩形&#xff0c;用1*2的方块进行覆盖&#xff0c;不能重叠&#xff0c;不能越出矩形边界&#xff0c;问完全覆盖完整个矩形有多少种不同的方案 其中n和m均为奇数的话&#xff0c;矩形面积就是奇数&#xff0c;可知是…

又到618,.NET 千万级秒杀架构到底有多牛

年年618&#xff0c;次次高并发。其实这不仅仅是对618下各大电商平台的考验&#xff0c;更是如今每一个互联网应用上线后&#xff0c;会遇到的一个严峻的考验&#xff0c;渡得过 965&#xff0c;渡不过 996。在这个极速膨胀的互联网世界里&#xff0c; .NET 5 正是为了应对与解…

灯泡里的钨丝是怎么放进去的,这个视频解开我20多年的疑惑!

全世界只有3.14 % 的人关注了数据与算法之美白炽灯渐渐从我们的视线里消失了&#xff0c;不得不说这个一个伟大的发明&#xff0c;试想一下要是没有灯&#xff0c;只点蜡烛会有多少人抓狂&#xff0c;那么你知道灯泡里的钨丝是怎么放进去的吗&#xff0c;这个视频给你答案。灯泡…