WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu

摘要:
SetterProperty=“FontSize”值=“{StaticResourceFontSize}”/>SetterProperty=“Width”值=“Auto”/>ControlAttachProperty.FIconSize“值=“22”/>SetterProperty=“Template”>

一.前言

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

  本文主要内容

  • 菜单Menu的自定义样式;
  • 右键菜单ContextMenu的自定义样式;
  • 树控件TreeView的自定义样式,及右键菜单实现。

二.菜单Menu的自定义样式

  自定义菜单样式的效果图:

WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu第1张

  Menu和ContextMenu样式本身很简单,他们最主要的部分就是MenuItem,MenuItem中包含的内容比较多,如图标、选中状态、二级菜单、二级菜单的指针、快捷键等。 使用了字体图标定义菜单项MenuItem样式代码:  

WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu第2张
复制代码
    <!--菜单项MenuItem样式FIconMenuItem-->
    <Style x:Key="FIconMenuItem" TargetType="{x:Type MenuItem}">
        <Setter Property="BorderBrush" Value="{StaticResource MenuBorderBrush}"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Background" Value="{StaticResource MenuBackground}"/>
        <Setter Property="Foreground" Value="{StaticResource MenuForeground}"/>
        <Setter Property="FontSize" Value="{StaticResource FontSize}"/>
        <Setter Property="Height" Value="28"/>
        <Setter Property="Width" Value="Auto"/>
        <Setter Property="Margin" Value="1"/>
        <Setter Property="local:ControlAttachProperty.FIconSize" Value="22"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type MenuItem}">
                    <!--Item-->
                    <Border  x:Name="border" Background="Transparent" Height="{TemplateBinding Height}" Opacity="1">
                        <Grid  VerticalAlignment="Center" Margin="{TemplateBinding Margin}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition x:Name="icon_col" MaxWidth="35" SharedSizeGroup="MenuItemIconColumnGroup"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="MenuTextColumnGroup"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup"/>
                                <ColumnDefinition Width="16" x:Name="arrow_col" SharedSizeGroup="MenumItemArrow"/>
                            </Grid.ColumnDefinitions>
                            <!--icon-->
                            <TextBlock x:Name="PART_Icon" Text="{TemplateBinding Icon}" Foreground="{TemplateBinding Foreground}" Margin="5,1,1,1"
                                       FontSize="{TemplateBinding local:ControlAttachProperty.FIconSize}" Style="{StaticResource FIcon}"/>
                            <!--Header-->
                            <ContentPresenter Grid.Column="1" x:Name="txtHeader" Margin="3,1,5,1" MinWidth="90"
                                          RecognizesAccessKey="True" VerticalAlignment="Center" ContentSource="Header"/>
                            <!--快捷键 InputGestureText 暂不支持你了 -->
                            <TextBlock Grid.Column="2" Margin="3,1,3,1" x:Name="IGTHost" Text="{TemplateBinding InputGestureText}" 
                                       FontSize="{TemplateBinding FontSize}"
                                       VerticalAlignment="Center" Visibility="Visible" Foreground="{TemplateBinding Foreground}" />
                            <!--右指针-->
                            <TextBlock x:Name="PART_Arrow" Grid.Column="3"

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Js 跨域之李代桃僵ORA-12521: TNS: 监听程序当前无法识别连接描述符中请求的实例(原)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

element-UI 表单图片判空验证问题

本文地址:http://www.cnblogs.com/veinyin/p/8567167.html  element-UI的表单验证似乎并没有覆盖到文件上传上面,当我们需要在表单里验证图片时,就会出现问题。 当图片为空时,点击保存,会出现提示。 但是当我上传图片后,提示并不会随着消失,而是仍然显示着,如下图 如果需要做到正常的表单验证,可以在 on-c...

如何掌握C#的核心技术

如何掌握C#的核心技术 原图链接 引子 前不久看到一个段子,某年宁波交警引进人脸识别技术抓拍行人闯红灯,结果一天下来被发现闯红灯次数最多的是珠海女子董小姐,日闯红灯3000多次。宁波交警连夜研究抓捕方案,最后分析发现,原来是大巴车上的某掌握核心的产品广告被错误识别了。 这家自称掌握了核心的制造企业,虽然并非每个产品都卖座,但这样的广告词确实也牢牢抓住了观众...

C#使用zookeeper

C#使用zookeeper https://blog.csdn.net/XuWei_XuWei/article/details/80611659 1.简述 zookeeper适用于分布式锁,配置管理,服务器管理,服务发现场景c#使用zookeeper基于开源组件ZooKeeperNetEx,详情GitHub搜一下 2.安装开发包 使用nuget安装ZooK...

JBoss入门

 很多内容摘自 https://www.jianshu.com/p/4baaf549436b 1.安装目录 安装完Jboss后得目录结构 目录 功能 appclient/ 包含应用程序客户容器的配置细节。 bin/ 包含 Red Hat 企业版 Linux 和微软 Windows 上 JBoss EAP 的启动脚本。 docs/ 许可证文...

蓝桥杯 2014本科C++ B组 奇怪的分式 暴力枚举

蓝桥杯 枚举 奇怪的分式 标题:奇怪的分式     上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:     1/4 乘以 8/5     小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)     老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!     对于分子、分母都是 1~9 中的一位数的情况,还...

sentos 上安装vnc图形界面

一、安装gnome图形化桌面   CentOS 6.3 64位 #yum groupinstall -y "X Window System" #yum groupinstall -y "Desktop" #yum groupinstall -y "Chinese Support" 二、安装vncserver并配置 1.安装vncserver #...