将数据传递给WPF中的多个用户控件实例

时间:2015-01-02 06:21:28

标签: wpf

我正在使用带有MVVM架构的WPF开发桌面应用程序,其中,我创建了一个包含Menu控件的用户控件(View),其菜单项将从其View模型中动态添加。

以上情况完美无缺。但问题是,我想重新使用上面的用户控件,以便在视图中的不同位置创建多个菜单,并使用不同的菜单项数据。

我的视图模型需要知道菜单名称(或一些参数值)才能获取相应的菜单项并动态添加到菜单中。

请帮我解释如何将数据/菜单名称传递给View Model?

此致 斯里里。

1 个答案:

答案 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");
    }
}