数据绑定ContextMenu
本文关键字:ContextMenu 数据绑定 | 更新日期: 2023-09-27 18:16:23
我需要实现一个contextMenu绑定到从web服务返回的集合。返回的数据是ContextMenuModel类的集合:
List<ContextMenuItem> menuItems = webService.GetMenuItemsForUser(userID);
public class ContextMenuItem
{
public string MainItemName { get; set; }
public List<ContextSubItem> SubItems { get; set; }
public ContextMenuItem()
{
SubItems = new List<ContextSubItem>();
}
}
public class ContextSubItem
{
public int ID { get; set; }
public string Name { get; set; }
}
我如何在一个ContextMenu上绑定这个类?特别是,如何将子项绑定到contextMenu?
编辑
我已经尝试了以下操作,但是子项无法展开。如果我显式地将IsSubmenuOpen
设置为mainItem数据模板,它们是可见的,但是一旦关闭,它们在第二次尝试时不会再次显示。
<DataGrid.ContextMenu>
<ContextMenu ItemsSource="{Binding MenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding MainItemName}" ItemsSource="{Binding SubItems}" >
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Name}"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</DataGrid.ContextMenu>
使用 HierarchicalDataTemplate
如果您想要嵌套集合:
<ContextMenu ItemsSource="{Binding MenuItems}">
<ContextMenu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
<MenuItem Header="{Binding MainItemName}"/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Name}"/>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>