C# 创建动态WPF上下文菜单
我的ViewModel中有一个ObservableCollection,我想创建一个绑定到该集合的ContextMenu,其中集合中的每个项都有一个子菜单,并且所有子菜单都相同。 例如,集合为{10,20,30},子菜单为 -参数(菜单项) -集合(菜单项) -重置(菜单项) -清除(菜单项) 所以最后的上下文菜单应该是这样的\ - 10 -Param -设置 -重置 -清楚的 - 20 -Param -设置 -重置 -清楚的 - 30 .... 我尝试创建一个资源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:
<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
是基础源对象中的属性