如何从具有绑定(bind)和可观察集合的数据库表向 WPF 中的菜单控件(而非上下文菜单)添加菜单项?。我有这个菜单:
<Menu HorizontalAlignment="Left" Height="27" VerticalAlignment="Top" Width="649">
<MenuItem Header="_File">
<MenuItem Header="_Exit" Command="{Binding ExitCommand}"/>
</MenuItem>
<MenuItem Header="_MyMenu">
<MenuItem Header="_SubMenu1" Command="{Binding SubMenu1Command}" />
<MenuItem Header="_SubMenu2" Command="{Binding SubMenu2Command}" />
</MenuItem>
</Menu>
“SubMenu1”和“_SuMenu2”是数据库表中的值:
鳕鱼子菜单 |子菜单列 |命令列
1__________|SubMenu1 _____|子菜单1命令 2__________|子菜单2_____|_SubMenu2Command
我需要这样的东西:
<Menu HorizontalAlignment="Left" Height="27" VerticalAlignment="Top" Width="649"
ItemsSource="{Binding ObservableCollectionMenu}">
<MenuItem Header="_File">
<MenuItem Header="_Exit" Command="{Binding ExitCommand}"/>
</MenuItem>
<MenuItem Header="_MyMenu">
<MenuItem Header="{Binding ObservableCollectionMenu.SubMenuColumn}" Command="{Binding ObservableCollectionMenu.CommandColumn}" />
</MenuItem>
</Menu>
当我运行应用程序时,当我按下选项文件和我的菜单时,菜单必须显示:
文件 |我的菜单
退出 |子菜单1
___|子菜单2
最佳答案
使用菜单的 ItemsSource
属性和 MenuItems(以一种样式)绑定(bind)您的集合:
<Menu ItemsSource="{Binding YourCollection}" />
和
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Path=Name}" />
<Setter Property="ItemsSource" Value="{Binding Path=Children}" />
</Style>
编辑:对于命令绑定(bind),请执行以下操作:
将这样的 setter 添加到 MenuItem 的模板中:
<Setter Property="Command" Value="{Binding Path=Command}" />
将此结构用于
MenuItem
View 模型:public class BindableMenuItem { public string Name { get; set; } public BindableMenuItem[] Children { get; set; } public ICommand Command { get; set; } }
将根项添加到
BindableMenuItems
集合中,并将该集合绑定(bind)到菜单。
关于c# - WPF 中的动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298992/