创建动态WPF上下文菜单
本文关键字:菜单 上下文 WPF 动态 创建 | 更新日期: 2023-09-27 18:17:22
我在我的ViewModel中有一个ObservableCollection,我想创建一个ContextMenu,它绑定到集合中,集合中的每个项目都有一个子菜单,所有子菜单都是相同的。例如,集合为{10,20,30},子菜单为-参数(菜单项)-设置(菜单项)-重置(菜单项)-清除(菜单项)因此,最终的上下文菜单看起来像这样'- 10——参数——设置——重置——明确- 20——参数——设置——重置——明确- 30....我已经尝试创建一个资源
<x:Array x:Key="MenuResource" Type=Control>
<MenuItem Header="Param"/>
<MenuItem Header="Set"/>
<MenuItem Header="Reset"/>
<MenuItem Header="Clear"/>
</x:Array>
和设置为ItemSource属性的菜单的ItemContainerStyle的菜单样式。
谁能告诉我XAML的方法来做到这一点。由于
您必须定义 HierarchicalDataTemplate
来绑定子集合,并直接将外部集合绑定到上下文菜单的 ItemsSource
,如下所示:
<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
是底层源对象中的一个属性。