定义ContextMenu样式

  1. 定义字典文件

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><!--阿里矢量库的图标--><FontFamily x:Key="Iconfont">/Assets/Fonts/#iconfont</FontFamily><!--  Separator  --><Style x:Key="SeparatorStyle" TargetType="{x:Type Separator}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Separator}"><Border Height="0.7" Background="#ededef" /></ControlTemplate></Setter.Value></Setter></Style><!--  Outer menu items  --><Style TargetType="{x:Type MenuItem}"><Style.Triggers><Trigger Property="IsHighlighted" Value="False"><Setter Property="Height" Value="35" /></Trigger><Trigger Property="IsHighlighted" Value="True"><Setter Property="Height" Value="35" /></Trigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Foreground" Value="#98989c" /></Trigger><Trigger Property="IsEnabled" Value="True"><Setter Property="Foreground" Value="#010101" /></Trigger></Style.Triggers></Style><!--  Outer menu  --><Style TargetType="{x:Type ContextMenu}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ContextMenu}"><!--  Here is where you change the border thickness to zero on the menu  --><Border Padding="5"  Width="{TemplateBinding Width}"><Border.Effect><DropShadowEffect Color="#1e1e1e00" ShadowDepth="0" BlurRadius="5" Opacity="0.1" Direction="0"/></Border.Effect><Border x:Name="Border" CornerRadius="5" Padding="0 5"><StackPanelClipToBounds="True"IsItemsHost="True"KeyboardNavigation.DirectionalNavigation="Cycle"Orientation="Vertical" /></Border></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="true"><Setter TargetName="Border" Property="Background" Value="#ffffff" /></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><!--  SubmenuItem  --><ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}"><Border Name="Border" Background="Transparent" ClipToBounds="True"><Grid><StackPanel Orientation="Horizontal" ><TextBlock Text="{TemplateBinding Icon}" FontSize="16" Margin="10 0 10 0" Foreground="#595959"FontFamily="{DynamicResource Iconfont}" VerticalAlignment="Center"/><TextBlock Text="{TemplateBinding Header}" FontSize="14" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" MaxWidth="150"ToolTip="{TemplateBinding Header}"/></StackPanel><TextBlock x:Name="Checkabled" Text="" FontSize="14" VerticalAlignment="Center" FontFamily="{DynamicResource Iconfont}" Visibility="Collapsed" Foreground="red" HorizontalAlignment="Right" Margin="0 0 10 0"/></Grid></Border><ControlTemplate.Triggers><Trigger Property="IsHighlighted" Value="true"><Setter TargetName="Border" Property="Background" Value="#f2f2f2" /></Trigger><Trigger Property="IsEnabled" Value="false"><Setter Property="Foreground" Value="#0f3c5a" /></Trigger><Trigger Property="IsCheckable" Value="true"><Setter Property="Visibility" TargetName="Checkabled" Value="Visible" /></Trigger></ControlTemplate.Triggers></ControlTemplate><!--  SubmenuHeader  --><ControlTemplate x:Key="{x:Static MenuItem.SubmenuHeaderTemplateKey}" TargetType="{x:Type MenuItem}"><Border Name="Border"><Grid Background="Transparent"><StackPanel Orientation="Horizontal"><TextBlock Text="{TemplateBinding Icon}" FontSize="16" Margin="10 0 10 0" Foreground="#595959"FontFamily="{DynamicResource Iconfont}" VerticalAlignment="Center"/><TextBlock Text="{TemplateBinding Header}" FontSize="14" VerticalAlignment="Center"/></StackPanel><TextBlock Text="" FontSize="10"VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0 0 10 0" FontFamily="{DynamicResource Iconfont}"/><PopupName="Popup"AllowsTransparency="True"Focusable="False"Width="{TemplateBinding Width}"HorizontalOffset="-5"IsOpen="{TemplateBinding IsSubmenuOpen}"Placement="Right"PopupAnimation="Fade"><StackPanel Orientation="Horizontal"><Border Width="5" Height="35" Background="White" Opacity="0.01"/><Border Padding="5"><Border.Effect><DropShadowEffect Color="#1e1e1e00" ShadowDepth="0" BlurRadius="5" Opacity="0.1" Direction="0"/></Border.Effect><Border Width="{TemplateBinding Width}"Name="SubmenuBorder"Background="White"><StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" /></Border></Border></StackPanel></Popup></Grid></Border><ControlTemplate.Triggers><Trigger Property="IsHighlighted" Value="true"><Setter TargetName="Border" Property="Background" Value="#f2f2f2" /></Trigger><Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True"><Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="4" /><Setter TargetName="SubmenuBorder" Property="Padding" Value="0,3,0,3" /></Trigger><Trigger Property="IsEnabled" Value="false"><Setter Property="Foreground" Value="#0f3c5a" /></Trigger></ControlTemplate.Triggers></ControlTemplate>
    </ResourceDictionary>
    
  2. 使用

<MenuItem Header="完整模式" Icon=""><MenuItem Header="完整模式" Width="150" Icon=""/><MenuItem Header="mini模式" Width="150" Icon=""/><MenuItem Header="最小化" Width="150" Icon=""/>
</MenuItem>
<MenuItem Header="打开桌面歌曲" Icon=""/>
<MenuItem Header="锁定桌面歌词" Icon=""/>
  1. 例子来源

    模仿网易云


wpf 定义ContextMenu样式相关推荐

  1. 【WPF】右下角弹出自定义通知样式(Notification)——简单教程

    [WPF]右下角弹出自定义通知样式(Notification)--简单教程 原文:[WPF]右下角弹出自定义通知样式(Notification)--简单教程 1.先看效果 2.实现 1.主界面是Mai ...

  2. WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...

  3. 【转】WPF自定义控件与样式(3)-TextBox RichTextBox PasswordBox样式、水印、Label标签、功能扩展...

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...

  4. WPF快速入门系列(6)——WPF资源和样式

    WPF快速入门系列(6)--WPF资源和样式 一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一 ...

  5. WPF自定义控件与样式(1)-矢量字体图标(iconfont)

    原文:WPF自定义控件与样式(1)-矢量字体图标(iconfont) 一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序 ...

  6. WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展

    原文:WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐 ...

  7. WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式

    原文:WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等, ...

  8. WPF编程学习 —— 样式

    本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的 ...

  9. C# wpf ScrollBar自定义样式详解

    文章目录 前言 一.ScrollBar的组成 1.结构说明 2.具体组成 行按钮 页按钮 滑块 轨道 二.如何自定义? 1.确定参数 2.定义Style 3.定义Template 四.使用方法 1.继 ...

最新文章

  1. Python Tools for Machine Learning
  2. 人脸识别开源网络笔记
  3. Java中的String、StringBuilder、StringBuffer
  4. pipreqs------查找python项目依赖并生成requirements.txt
  5. LINUX安装JDK1.8(wget rpm)
  6. php v9搜索不到内容,關於如何解決PHPCMS V9內容搜索顯示不全問題解決方案
  7. 富士通Fujitsu DPK8510E 打印机驱动
  8. 微信百度网盘小程序文件分享Burp抓包获得链接和提取码
  9. three.js + jquery灯光照耀js特效
  10. At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger
  11. linux igb网卡,网卡驱动程序igb ixgbe
  12. 设置mathtype章节号显示与隐藏
  13. 免费Zblog站群采集管理插件工具
  14. 训练日记2019.11.13 冬至日
  15. vue的scoped 样式隔离,样式穿透,及细节
  16. Java FX 表格数据赋值
  17. 界面控件BCGControlBar for .NET v7.1正式发布——支持VS 2022
  18. 使用c++/winrt API获取RGB相机视频流
  19. DDR3基本概念2 - 上电复位时序
  20. 智能指针(shared_ptr、unique_ptr、weak_ptr)的使用

热门文章

  1. Windows Server 2003 防木马、权限设置、IIS服务器安全配置整理
  2. ajax值传递给其他函数,jquery中ajax返回值无法传递到上层函数
  3. 迭代器 iterator(二): 用iterator遍历arraylist
  4. 17种焊接方式大全,精通1种你的工资就能过万
  5. python matplotlib 绘制不等距数据
  6. C#窗体TextBox只能输入数字
  7. OPPO魅族鸿蒙,鸿蒙出击 手机江湖波谲云诡 魅族对接小米无声OPPO忽起风波
  8. 银行业务管理软件 (1)
  9. Android P版本非SDK接口管控特性,参考华为
  10. python识别食物卡路里_【案例】AI减肥相机:识别菜品所含的卡路里!