Wpf 将ContextMenu菜单项数据绑定到现有菜单';s菜单项

Wpf 将ContextMenu菜单项数据绑定到现有菜单';s菜单项,wpf,data-binding,contextmenu,Wpf,Data Binding,Contextmenu,给定一个名为“main”的菜单,我想编写如下标记: <Window.ContextMenu> <ContextMenu ItemsSource="{Binding ElementName=main, Path=Items}" /> </Window.ContextMenu> 这不起作用-它似乎创建了一个空的上下文菜单 这是菜单的标记: <Menu Name="main" Grid.ColumnSpan="2" FontSize="14" D

给定一个名为“main”的菜单,我想编写如下标记:

<Window.ContextMenu>
    <ContextMenu ItemsSource="{Binding ElementName=main, Path=Items}" />
</Window.ContextMenu>

这不起作用-它似乎创建了一个空的上下文菜单

这是菜单的标记:

<Menu Name="main" Grid.ColumnSpan="2" FontSize="14" DockPanel.Dock="Top" HorizontalAlignment="Stretch">
    <MenuItem Header="_File">
        <MenuItem Header="_Exit" Command="Close" />
    </MenuItem>
    <MenuItem Header="_Options">
        <MenuItem Header="_Show status bar" IsCheckable="True" />
        <MenuItem Header="_Group numbers" IsCheckable="True" />
    </MenuItem>
<MenuItem Header="_About" />

该解决方案足以满足我的需要,尽管它不使用数据绑定,而是使用一系列菜单项作为资源


从理论上讲,知道这是否可能还是很有趣的。

你能把XAML放在包含“main”的地方吗?我现在没有。这有关系吗?“main”是一个带有菜单项的菜单,它可以正确显示。这是不可能的。MenuItem是FrameworkElement对象。因此,它只有一个逻辑父级。它不能同时将菜单和上下文菜单作为其父菜单。每次引用资源时,您提供的链接中的解决方案都会生成一个菜单项数组,因此菜单项不会在菜单之间共享。