适当的MVVM方式将信息从父视图传递到子视图模型

时间:2012-04-24 19:29:16

标签: mvvm

我正在使用WPF开始一个新的MVVM项目,我不熟悉这两个项目,并希望确保我使用的是正确的MVVM方法。

我有以下内容:

  • 我有一个包含自己的ViewModel和TabControl
  • 的主用户控件
  • 每个标签包含一个单独的用户控件及其自己的ViewModels
  • 创建MasterViewModel时,其中一个属性被设置(让我们称之为MasterId)
  • 我需要将MasterId属性更改从主视图模型传播到子视图模型

我想知道实现这个简单场景的最简单/最佳/适当的MVVM方法是什么?

1 个答案:

答案 0 :(得分:3)

对于TabControl s等,我倾向于在MasterViewModel

的集合中拥有子视图模型
 public ObservableCollection<ViewModelBase> Tabs { get; private set; }

当您的ID设置或您的子视图模型被创建后,您可以设置它们的属性

public int MasterId
{
    get { return _masterId; }
    set { _masterId = value;
          foreach(var vm in Tabs)
             vm.MasterId = value; 
          NotifyPropertyChanged("MasterId");  
        }
}