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