【发布时间】:2015-04-15 18:15:48
【问题描述】:
例如,我在 xaml 下面有一个简单的控件:
<ContextMenu>
<MenuItem Header = "Open in new tab"/>
<MenuItem Header = "Open in new window"/>
<MenuItem Header = "Open in incognito window"/>
<Separator Padding="0"/>
<MenuItem Header = "Edit..."/>
<Separator Padding="0"/>
<MenuItem Header = "Cut"/>
<MenuItem Header = "Copy"/>
<MenuItem Header = "Paste"/>
<Separator Padding="0"/>
<MenuItem Header = "Delete"/>
</ContextMenu>
产生:
我希望剪切/复制/粘贴 MenuItem 元素位于它们自己的控件中。但是,Wpf 限制我只在没有父元素的控件中声明 3 个 MenuItem。所以我尝试将 MenuItems 放在 Menu、Grid、ItemsControl 和其他控件中,但没有成功。格式很奇怪。我要做的就是将剪切/复制/粘贴抽象为一个单独的控件,并使最终产品看起来与上面的 xaml 相同。以下是我失败的尝试:
MyContextMenu.xaml:
<ContextMenu>
<MenuItem Header = "Open in new tab"/>
<MenuItem Header = "Open in new window"/>
<MenuItem Header = "Open in incognito window"/>
<Separator Padding="0"/>
<MenuItem Header = "Edit..."/>
<Separator Padding="0"/>
<ref:MyCutCopyPaste/>
<Separator Padding="0"/>
<MenuItem Header = "Delete"/>
</ContextMenu>
MyCutCopyPaste.xaml:
<Grid>
<MenuItem Header = "Cut"/>
<MenuItem Header = "Copy"/>
<MenuItem Header = "Paste"/>
<Grid>
我可能会采用我的解决方案并尝试格式化,但必须有一个我也没有注意到的简单解决方案。我知道我还可以将每个菜单项(剪切、复制和粘贴)声明到它自己的 xaml 文件中。但如果可能的话,我想将这三个文件都保存在一个文件中。
【问题讨论】:
标签: wpf xaml contextmenu menuitem