WPF MenuItem 四种角色分析
Menu
Menu的样式很简单,就是顶部的那个框,如下图
![](https://app.yinxiang.com/shard/s9/res/61b3ed3d-3ba3-4bbd-b41d-85f3e5b9c0c3/QQ%E6%88%AA%E5%9B%BE20140217114630.png?resizeSmall&width=1020)
而其中的文字“文件”“图形”...是属于MenuItem的,要灵活使用MenuItem,就需要了解MenuItem.Role的作用
TopLevelItem | 没有子菜单,直接执行命令 |
TopLevelHeader | 能够弹出子菜单 |
SubmenuItem | 没有子菜单,直接执行命令 |
SubmenuHeader | 能够弹出子菜单 |
你们可别小看这几个东西,要研究清楚还是要费点时间的
MenuItem.Role是个只读属性,是系统根据当前样式来设置的,如果我们要完整的控制整个菜单的样式,那么这些样式都要实现,那我们就来理解上面分别属于那些部分
先说TopLevelHeader
![](https://app.yinxiang.com/shard/s9/res/5f23b28b-9f39-44e7-8559-ae1be3cf1def/QQ%E6%88%AA%E5%9B%BE20140217134348.png?resizeSmall&width=1020)
TopLevelHeader就包括Header和Popup菜单,可以弹出菜单,但是不能绑定命令
而没有子级菜单和带有命令(其实是一样的,没有子级菜单,那么点击肯定是要执行一些操作的)如下
![](https://app.yinxiang.com/shard/s9/res/2698cca0-fd8d-4c3a-839a-0eed7c755b88/QQ%E6%88%AA%E5%9B%BE20140217134746.png?resizeSmall&width=1020)
然后剩下的就是SubmenuHeader和SubmenuItem了,其实很容易区分
SubmenuHeader是有子菜单的,所有它的作用仅仅相当于一个分类,它的组成可以看成是Icon,Header,快捷键和三角形
![](https://app.yinxiang.com/shard/s9/res/5cf143c0-c959-4592-adbf-8662c4d07088/QQ%E5%9B%BE%E7%89%8720140217140854.jpg?resizeSmall&width=1020)
而SubmenuItem就是具体要执行的命令,由一个勾选框和Header,快捷键组成,只要根据勾选情况显示和隐藏勾选标记即可。
现在明白了菜单中的这些角色,看样式就非常简单了