wpf 定义ContextMenu样式
定义ContextMenu样式
定义字典文件
<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>
使用
<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=""/>
例子来源
模仿网易云
wpf 定义ContextMenu样式相关推荐
- 【WPF】右下角弹出自定义通知样式(Notification)——简单教程
[WPF]右下角弹出自定义通知样式(Notification)--简单教程 原文:[WPF]右下角弹出自定义通知样式(Notification)--简单教程 1.先看效果 2.实现 1.主界面是Mai ...
- WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...
- 【转】WPF自定义控件与样式(3)-TextBox RichTextBox PasswordBox样式、水印、Label标签、功能扩展...
一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...
- WPF快速入门系列(6)——WPF资源和样式
WPF快速入门系列(6)--WPF资源和样式 一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一 ...
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
原文:WPF自定义控件与样式(1)-矢量字体图标(iconfont) 一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序 ...
- WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展
原文:WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐 ...
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
原文:WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等, ...
- WPF编程学习 —— 样式
本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的 ...
- C# wpf ScrollBar自定义样式详解
文章目录 前言 一.ScrollBar的组成 1.结构说明 2.具体组成 行按钮 页按钮 滑块 轨道 二.如何自定义? 1.确定参数 2.定义Style 3.定义Template 四.使用方法 1.继 ...
最新文章
- Python Tools for Machine Learning
- 人脸识别开源网络笔记
- Java中的String、StringBuilder、StringBuffer
- pipreqs------查找python项目依赖并生成requirements.txt
- LINUX安装JDK1.8(wget rpm)
- php v9搜索不到内容,關於如何解決PHPCMS V9內容搜索顯示不全問題解決方案
- 富士通Fujitsu DPK8510E 打印机驱动
- 微信百度网盘小程序文件分享Burp抓包获得链接和提取码
- three.js + jquery灯光照耀js特效
- At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger
- linux igb网卡,网卡驱动程序igb ixgbe
- 设置mathtype章节号显示与隐藏
- 免费Zblog站群采集管理插件工具
- 训练日记2019.11.13 冬至日
- vue的scoped 样式隔离,样式穿透,及细节
- Java FX 表格数据赋值
- 界面控件BCGControlBar for .NET v7.1正式发布——支持VS 2022
- 使用c++/winrt API获取RGB相机视频流
- DDR3基本概念2 - 上电复位时序
- 智能指针(shared_ptr、unique_ptr、weak_ptr)的使用
热门文章
- Windows Server 2003 防木马、权限设置、IIS服务器安全配置整理
- ajax值传递给其他函数,jquery中ajax返回值无法传递到上层函数
- 迭代器 iterator(二): 用iterator遍历arraylist
- 17种焊接方式大全,精通1种你的工资就能过万
- python matplotlib 绘制不等距数据
- C#窗体TextBox只能输入数字
- OPPO魅族鸿蒙,鸿蒙出击 手机江湖波谲云诡 魅族对接小米无声OPPO忽起风波
- 银行业务管理软件 (1)
- Android P版本非SDK接口管控特性,参考华为
- python识别食物卡路里_【案例】AI减肥相机:识别菜品所含的卡路里!