gpt4 book ai didi

c# - 上下文菜单的 WPF 子菜单

转载 作者:太空狗 更新时间:2023-10-29 20:04:49 26 4
gpt4 key购买 nike

如果上下文菜单在 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>

这意味着,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 元素添加子菜单?

最佳答案

您可以将 MenuItem.ItemsSource 设置为嵌套集合。这将为任何菜单项生成子菜单。为此,支持您的 MenuItem 的模型应该包含子菜单项集合

<ContextMenu ItemsSource="{Binding ContextMenuItemsSource}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="ItemsSource" Value="{Binding ContextMenuSubItems}"></Setter>
<Setter Property="Header" Value="{Binding ContextMenuCommandHeader}"></Setter>
<Setter Property="Command" Value="{Binding ContextMenuCommand}"></Setter>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>

同样,您可以设置 MenuItem.ItemContainerStyleMenuItem.ItemTemplate 来设置子菜单项的样式。

关于c# - 上下文菜单的 WPF 子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com