2008-09-29 30 views
2

我有一个定义的MenuItem,我想在一个页面上的两个不同菜单之间共享。该菜单包含两个菜单中相同的功能性,我不想要它的两个副本。有没有办法在Page.Resources中定义一个MenuItem,并在下面的ContextMenu XAML中引用它?如何在WPF中的上下文菜单和常规菜单之间共享菜单定义

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

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

    <!-- include shared menu here --> 

</ContextMenu> 

回答

3

我已经通过在菜单项本身上设置x:Shared =“False”来完成此操作。资源在每个默认使用它们的地方共享(意味着所有用途都有一个实例),因此关闭资源意味着每次都会创建一个新的资源“副本”。

所以:

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

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

<StaticResource ResourceKey="myMenuItem" /> 
1

因为要混合和匹配......我会做,从文本菜单继承了具有“SharedMenuItems”扶养属性和的MenuItems扶养属性的自定义控件。这样你的控制就可以决定如何将这两套合并在一起。如果您想要举一个例子,请告诉我。

+0

虽然这并没有回答我的确切问题,但它似乎是一个很好的解决方法。我会试试看。谢谢。 – 2008-09-29 19:27:09

0

有多种选择: 一)数据绑定的文本菜单或菜单相同的基本收集和利用项目模板等人的工作 B)使用命令,并绑定到一组命令绑定