如果上下文菜单在xaml中是“硬编码”的,那么添加子菜单就很容易。例如:
<ContextMenu>
<MenuItem Header="Comm1" Command="{Binding Blabla1}">
<MenuItem Header="SubComm1" Command="{Binding Blabla2}"></MenuItem>
</MenuItem>
<MenuItem Command="Comm2"></MenuItem>
<MenuItem Command="Comm3"></MenuItem>
</ContextMenu>
这意味着,上下文菜单具有三个元素(Comm1、Comm2和Comm3),并且Comm1具有子菜单SubComm1。
我使我的ContextMenu更加灵活:
<ContextMenu ItemsSource="{Binding ContextMenuItemsSource}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding ContextMenuCommandHeader}"></Setter>
<Setter Property="Command" Value="{Binding ContextMenuCommand}"></Setter>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
基本上我可以在ContextMenu中拥有任意数量的元素,并且任何元素都可以拥有任何命令。我如何在ContextMenu元素中添加子菜单?
3条答案
按热度按时间xzlaal3s1#
您可以将
MenuItem.ItemsSource
设置为嵌套集合。这将为任何菜单项生成子菜单。为此,支持MenuItem的模型中应该包含子菜单项集合同样,可以设置
MenuItem.ItemContainerStyle
和MenuItem.ItemTemplate
来设置子菜单项的样式。x3naxklr2#
显式指定,无需绑定集合,即可通过嵌套子菜单来添加子菜单。
一个MenuItem可以包含其他MenuItem元素作为子菜单,并且可以上升到几个级别。下面的代码向第一个菜单项添加三个子菜单项。
来源:https://www.c-sharpcorner.com/uploadfile/mahesh/menus-in-wpf/
vyswwuz23#
如果从CodeBehind创建上下文菜单,则可以通过编程方式添加子菜单,如下所示: