2

我有一个已定义的 MenuItem,我想在一页上的两个不同菜单之间共享它。该菜单包含两个菜单之间相同的功能,我不想要它的两个副本。无论如何要在 Page.Resources 中定义一个 MenuItem 并在下面的 ContextMenu XAML 中引用它?

<Page.Resources>
    <MenuItem x:Key="123"/>
</Page.Resources>

<ContextMenu>
    <MenuItem>Something hardcoded</MenuItem>

    <!-- include shared menu here -->

</ContextMenu>
4

3 回答 3

6

我通过在菜单项本身上设置 x:Shared="False" 来做到这一点。默认情况下,资源在使用它们的每个地方之间共享(意味着所有使用中的一个实例),因此关闭它意味着每次都会制作资源的新“副本”。

所以:

<MenuItem x:Key="myMenuItem" x:Shared="False" />

您仍然会得到它的“副本”,但您只需要在一个地方定义它。看看是否有帮助。您可以在菜单定义中这样使用它:

<StaticResource ResourceKey="myMenuItem" />
于 2008-09-29T21:15:27.830 回答
1

因为你想混合搭配......我会制作一个继承自 ContextMenu 的自定义控件,它具有“SharedMenuItems”依赖属性和 MenuItems 依赖属性。这样,您的控件可以决定如何将这两个集合合并在一起。如果你想要一个这样的例子,请告诉我。

于 2008-09-29T19:17:12.700 回答
0

许多选项:a)将 ContextMenu 或菜单数据绑定到相同的底层集合并使用项目模板等到工作 b)使用命令,并将数据绑定到一组命令绑定

于 2008-09-30T04:42:31.623 回答