我正在使用Telerik控件库构建.Net WPF应用程序 我的仪表板有几个我实施的菜单 我正在尝试使用MVVM模型。
我的菜单项的类定义(在MVVM中)如下所示:
public class MenuItemVM : MenuVM
{
public enum MenuItemTypes : uint
{
Link,
SpecialLink,
TopLevel,
TopLevelWithDropDown,
TopLevelImage,
TopLevelSection,
Title,
Item,
Footer,
Separator,
Paragraph,
Gallery,
Image
};
public string Name { get; set; }
public string Content { get; set; }
public MenuItemTypes Type { get; set; }
private bool isSeparator = false;
public bool IsSeparator
{
get { return isSeparator; }
set { isSeparator = value;}
}
public ICommand Command { get; set; }
}
XAML中菜单的定义如下所示:
telerik:RadMenu Grid.Column="0"
Name="MainMenu"
Orientation="Vertical"
Margin="10,30,0,20"
Style="{StaticResource MainMenuStyle}"
Height="1200"
ItemsSource="{StaticResource MainMenuItemsSource}"
ItemContainerStyleSelector="{StaticResource MainMenuItemStyleSelector}"
ItemContainerStyle="{x:Null}"
我的ViewModel在Windows.Resources XAML中定义:
<viewModel:MenuVM x:Key="MainMenuItemsSource">
<viewModel:MenuItemVM Name="Test1" Content="Do Test 1" Type="Item" Command="??"/>
<viewModel:MenuItemVM Name="Test2" Content="Do Test 2" Type="Item" Command="??"/>
<viewModel:MenuItemVM Name="Test3" Content="Do Test 3" Type="Item" Command="??"/>
</viewModel:MenuVM>
我正在使用“Style”和“ControlTemplate”来定义菜单控件的布局。
我有一个简单的命令,我正在尝试绑定到菜单项。
namespace SampleApp.Commands
{
public class CommandTest : ICommand
{
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
MessageBox.Show("Command Clicked!!!");
}
}
}
菜单显示正确。
我无法弄清楚如何将命令绑定到菜单定义中的菜单项。
答案 0 :(得分:0)
将Command
个对象的MenuItemVM
属性设置为CommandTest
类的实例:
<viewModel:MenuVM x:Key="MainMenuItemsSource" xmlns:commands="clr-namespace:SampleApp.Commands">
<viewModel:MenuItemVM Name="Test1" Content="Do Test 1" Type="Item">
<viewModel:MenuItemVM.Command>
<commands:CommandTest />
</viewModel:MenuItemVM.Command>
</viewModel:MenuItemVM>
<viewModel:MenuItemVM Name="Test2" Content="Do Test 2" Type="Item">
<viewModel:MenuItemVM.Command>
<commands:CommandTest />
</viewModel:MenuItemVM.Command>
</viewModel:MenuItemVM>
<viewModel:MenuItemVM Name="Test3" Content="Do Test 3" Type="Item">
<viewModel:MenuItemVM.Command>
<commands:CommandTest />
</viewModel:MenuItemVM.Command>
</viewModel:MenuItemVM>
</viewModel:MenuVM>
并将Command
容器的RadMenuItem
属性绑定到每个Command
的{{1}}源属性:
MenuItemVM