如何从具有Bindings和Observable集合的数据库表中将菜单项添加到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>
Run Code Online (Sandbox Code Playgroud)
"SubMenu1"和"_SuMenu2"是数据库表中的值:
codSubMenu | SubMenuColum | CommandColumn
1_ _ __ _ __ _ __ | SubMenu1 _ __ _ _ | SubMenu1Command 2 _ __ _ __ _ ___ | SubMenu2 _ ____ | _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>
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,当我按下选项File和MyMenu时,菜单必须显示:
档案| 为MyMenu
退出| SubMenu1
___ | SubMenu2
使用ItemsSourceMenu和MenuItems(在样式中)的属性来绑定集合:
<Menu ItemsSource="{Binding YourCollection}" />
Run Code Online (Sandbox Code Playgroud)
和
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Path=Name}" />
<Setter Property="ItemsSource" Value="{Binding Path=Children}" />
</Style>
Run Code Online (Sandbox Code Playgroud)
编辑:对于命令绑定,请执行以下操作:
像这样添加一个setter到MenuItem的模板:
<Setter Property="Command" Value="{Binding Path=Command}" />
Run Code Online (Sandbox Code Playgroud)将此结构用于MenuItem视图模型:
public class BindableMenuItem
{
public string Name { get; set; }
public BindableMenuItem[] Children { get; set; }
public ICommand Command { get; set; }
}
Run Code Online (Sandbox Code Playgroud)将根项添加到集合中,BindableMenuItems并将此集合绑定到菜单.