use*_*069 7 c# wpf contextmenu
如果上下文菜单在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>
Run Code Online (Sandbox Code Playgroud)
这意味着,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>
Run Code Online (Sandbox Code Playgroud)
基本上我在ContextMenu中可以有任意数量的元素,任何元素都可以有任何命令.如何将子菜单添加到ContextMenu元素?
Nit*_*tin 12
您可以设置MenuItem.ItemsSource为嵌套集合.这将为任何menuitem生成子菜单.为此,支持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>
Run Code Online (Sandbox Code Playgroud)
同样,您可以设置MenuItem.ItemContainerStyle和设置子MenuItem.ItemTemplate菜单的样式.
| 归档时间: |
|
| 查看次数: |
15704 次 |
| 最近记录: |