我正在使用带有MVVM架构的WPF开发桌面应用程序,其中,我创建了一个包含Menu控件的用户控件(View),其菜单项将从其View模型中动态添加。
以上情况完美无缺。但问题是,我想重新使用上面的用户控件,以便在视图中的不同位置创建多个菜单,并使用不同的菜单项数据。
我的视图模型需要知道菜单名称(或一些参数值)才能获取相应的菜单项并动态添加到菜单中。
请帮我解释如何将数据/菜单名称传递给View Model?
此致 斯里里。
答案 0 :(得分:0)
我认为你有一个ViewModel,当给定一个字符串时会得到相应的菜单项?
如果是这样,我会认为这样的事情可以解决问题吗?如果没有,请提供一些代码,以便我们按照您的思考过程。
<强> AllMenuItemsViewModel.cs 强>
public AllMenuItemsViewModel : ViewModelBase
{
private ObservableCollection<MenuItemViewModel> _allMenuItems;
public ObservableCollection<MenuItemViewModel> AllMenuItems
{
get { return _allMenuItems; }
}
public AllMenuItemsViewModel(string menuName)
{
CreateAllMenuItems(menuName);
}
private void CreateAllMenuItems(string menuName)
{
var allItems = new List<MenuItemViewModel>();
// Add items to allItems based on provided string.
_allMenuItems = new ObservableCollection<MenuItemViewModel>(allMenuItems);
}
}
<强> ParentViewModel.cs 强>
public ParentViewModel : ViewModelBase
{
private readonly AllMenuItemsViewModel _mainMenuItems;
private readonly AllMenuItemsViewModel _subMenuItems;
public AllMenuItemsViewModel MainMenuItems
{
get { return _mainMenuItems; }
}
public AllMenuItemsViewModel SubMenuItems
{
get { return _subMenuItems; }
}
public ParentViewModel()
{
_mainMenuItems = new AllMenuItemsViewModel("Main");
_subMenuItems = new AllMenuItemsViewModel("Sub");
}
}