我有一个已定义的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)使用命令和数据绑定到一组命令绑定

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top