访问不同ViewModel的属性

时间:2018-06-12 20:27:40

标签: c# wpf mvvm

我有一个MainView和一个相应的MainViewModel。 在MainView内,我有一个HeaderView和一个相应的HeaderViewModel。 它看起来像这样:

enter image description here

MainViewModel's构造函数中,我创建了HeaderViewModel的新实例,并将一些参数传递给它:

HeaderViewModel = new HeaderViewModel(_eventAggregator, "Kundenstamm");

同样有一个Customer类型的属性绑定到我的所有文本框:

private Customer _customer;
public Customer Customer
{
    get { return _customer; }
    set
    {
        _customer = value;
        OnPropertyChanged();
    }
}

现在我的问题是,当我按下HeaderViewModel中的保存按钮时,我需要访问属性Customer。我如何实现这一目标? 在我看来,Prism的事件聚合器在这种情况下没有意义。

1 个答案:

答案 0 :(得分:2)

我可以想象通过多种方式实现这项工作,但它们基本归结为:

  

“Header”基本上是一个用户控件;它没有足够的信息来执行“保存”功能,因此应该委托给那些做的事情。

这可以通过以下方式完成:

  • 事件(OnSaved HeaderViewModelMainViewModel订阅
  • 代表(将SaveCallback传递给HeaderViewModel的构造函数
  • 事件仲裁者(带有OnSaved事件的第3个班级,标题指示它开火)
  • 可能是其他一些人。

就个人而言,我会做第一个。第二个也可以;由于MainViewModel无法直接访问HeaderViewModel实例,所以第三种情况才会生效。