C# 创建动态WPF上下文菜单

C# 创建动态WPF上下文菜单,c#,wpf,binding,contextmenu,menuitem,C#,Wpf,Binding,Contextmenu,Menuitem,我的ViewModel中有一个ObservableCollection,我想创建一个绑定到该集合的ContextMenu,其中集合中的每个项都有一个子菜单,并且所有子菜单都相同。 例如,集合为{10,20,30},子菜单为 -参数(菜单项) -集合(菜单项) -重置(菜单项) -清除(菜单项) 所以最后的上下文菜单应该是这样的\ - 10 -Param -设置 -重置 -清楚的 - 20 -Param -设置 -重置 -清楚的 - 30 .... 我尝试创建一个资源 <x:Array x:

我的ViewModel中有一个ObservableCollection,我想创建一个绑定到该集合的ContextMenu,其中集合中的每个项都有一个子菜单,并且所有子菜单都相同。 例如,集合为{10,20,30},子菜单为 -参数(菜单项) -集合(菜单项) -重置(菜单项) -清除(菜单项) 所以最后的上下文菜单应该是这样的\ - 10 -Param -设置 -重置 -清楚的 - 20 -Param -设置 -重置 -清楚的 - 30 .... 我尝试创建一个资源

<x:Array x:Key="MenuResource" Type=Control>
  <MenuItem Header="Param"/>
    <MenuItem Header="Set"/>
    <MenuItem Header="Reset"/>
  <MenuItem Header="Clear"/>  
</x:Array>

并在ContextMenu的ItemContainerStyle的MenuItem样式中设置ItemSource属性。 似乎什么都不管用

有人能告诉我XAML的方法吗。
谢谢

您必须定义
HierarchycalDataTemplate
来绑定子集合,并直接将外部集合绑定到上下文菜单的
项源
,如下所示:

<TextBlock Text="Context menu test">
    <TextBlock.ContextMenu>
        <ContextMenu ItemsSource="{Binding YourCollection}">
            <ContextMenu.ItemTemplate>
                <HierarchicalDataTemplate
                         ItemsSource="{Binding ChildCollection}">
                    <TextBlock Text="{Binding Name}"/>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}"/>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </ContextMenu.ItemTemplate>
        </ContextMenu>
    </TextBlock.ContextMenu>
</TextBlock>

假设
Name
是基础源对象中的属性