我需要实现绑定到从web服务返回的集合的contextMenu。返回的数据是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?
编辑
我尝试过以下几种方法,但是subItems没有扩展。如果我显式地将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>发布于 2014-08-04 16:47:32
如果您想要嵌套集合,请使用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>https://stackoverflow.com/questions/25122610
复制相似问题