没有图标区域的 System.Windows.Controls.MenuItem
每当我尝试调整 WPF 菜单项的外观时,我都会浪费一次自定义标题的机会,标题基本上是项目的文本。
我需要的是一个黑色菜单,白色文本,没有“图标区域”。
||一些文字 http://img848.imageshack.us/img848/7622/iconarea.png
如何我可以删除菜单项的图标区域吗?
谢谢。
Whenever I try to play with the look of WPF menu item, I get a wast opportunities to customize the header, which is basically the text of an item.
What I need, is to have a black menu, with white text and no "icon area".
||Some text http://img848.imageshack.us/img848/7622/iconarea.png
How can I remove the icon area of the menu item?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过定义
MenuItem
的ItemsPanel
属性来实现它。创建
ItemsPanelTemplate
资源将以下
MenuItem
样式添加到资源中,即可完成。要将相同的
Style
应用于ContextMenu
,您需要再创建一个Style
,如下所示 -You can achieve it by defining
ItemsPanel
property ofMenuItem
.Create an
ItemsPanelTemplate
resourceAdd below
MenuItem
style to resources and you are done.To apply same
Style
to aContextMenu
, you need to create one moreStyle
as following-您需要从 此处获取默认样式 并从 MenuItem 的控件模板中删除该区域。
对于 MenuItem,您实际上可以重新定义 SubmenuItemTemplateKey 和 SubmenuHeaderTemplateKey ControlTemplate,类似于 这里。
编辑:
背景实际上是由菜单样式渲染的。如果您搜索“MenuItemIconColumnGroup”,您将找到所有使用它的地方。
编辑:
这是一个使用黑色背景和白色前景的完整示例:
You would need to take the default Styles from here and remove that area from the MenuItem's control template.
For MenuItem, you can actually just redefine the SubmenuItemTemplateKey and SubmenuHeaderTemplateKey ControlTemplate, something like described here.
EDIT:
The background is actually rendered by the Menu Style. If you search for "MenuItemIconColumnGroup", you will find all the places that use it.
EDIT:
Here is a complete sample that uses a Black background and White foreground:
覆盖
Template
的解决方案似乎有点过分了(对我来说),“nits”的另一个答案很酷,但选择覆盖层绘制不正确(在我的示例中)。我的目标是利用图标的空间和快捷方式的空间。
这是结果:
这里是代码:
-20 使用图标的空间,-40 使用快捷方式的空间。此外,在此示例中,弹出窗口的大小是自动计算的。
另外值得一提的是命令的绑定:所有项目都绑定到同一个命令,但项目本身作为事件的参数 (
CommandParameter
) 给出。The solution which overrides the
Template
seems to be overkill (for me), the other answer from 'nits' is cool, but the selection overlay is not drawn correct (in my example).My aim was to use the space of the icon and the space of the shortcut.
This is the result:
Here the code:
-20 uses the space of the Icon, -40 uses the space of the shortcut. Furthermore the size of the popup is calculated automatically in this example.
Also worth to mention is the binding of the command: all items are bound to the same command, but the item itself is given as the Parameter of the Event (
CommandParameter
).