我有一个已定义的MenuItem,我想在一个页面上的两个不同菜单之间共享。菜单包含两个菜单之间相同的功能,我不想要它的两个副本。无论如何在Page.Resources中定义一个MenuItem并在下面的ContextMenu XAML中引用它?
<Page.Resources>
<MenuItem x:Key="123"/>
</Page.Resources>
<ContextMenu>
<MenuItem>Something hardcoded</MenuItem>
<!-- include shared menu here -->
</ContextMenu>
答案 0 :(得分:4)
我通过在菜单项本身上设置x:Shared =“False”来完成此操作。默认情况下使用它们的每个地方之间共享资源(意味着在所有用途中使用一个实例),因此将其关闭意味着每次都会生成资源的新“副本”。
所以:
<MenuItem x:Key="myMenuItem" x:Shared="False" />
你仍会得到它的“副本”,但你只需要在一个地方定义它。看看是否有帮助。您可以在菜单定义中使用它:
<StaticResource ResourceKey="myMenuItem" />
答案 1 :(得分:1)
因为你想混合搭配...我会创建一个自定义控件,它继承自ContextMenu,它具有“SharedMenuItems”依赖属性和MenuItems依赖属性。这样您的控件就可以决定如何将这两个集合在一起。如果您想要一个这样的例子,请告诉我。
答案 2 :(得分:0)
许多选择: a)将ContextMenu或Menu数据绑定到相同的底层集合,并使用项目模板等工作 b)使用命令和数据绑定到一组命令绑定