代码之家  ›  专栏  ›  技术社区  ›  Shaun Bowe

如何在WPF中的上下文菜单和常规菜单之间共享菜单定义

  •  2
  • Shaun Bowe  · 技术社区  · 18 年前

    <Page.Resources>
        <MenuItem x:Key="123"/>
    </Page.Resources>
    
    <ContextMenu>
        <MenuItem>Something hardcoded</MenuItem>
    
        <!-- include shared menu here -->
    
    </ContextMenu>
    
    3 回复  |  直到 18 年前
        1
  •  6
  •   Matt Hamilton    18 年前

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

    因此:

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

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

    <StaticResource ResourceKey="myMenuItem" />
    
        2
  •  1
  •   Phobis    18 年前

    因为你想混搭。。。我将创建一个从ContextMenu继承的自定义控件,该控件具有“SharedMenuItems”依赖性属性和MenuItems依赖性属性。通过这种方式,控件可以决定如何将这两个集合合并在一起。如果你想举个例子,请告诉我。

        3
  •  0
  •   Dominic Hopton    18 年前

    若干选择: a) 数据将ContextMenu或Menu绑定到同一基础集合,并使用item templates等进行工作 b) 使用命令,并将数据绑定到一组命令绑定

    推荐文章