MVVM在两个视图/视图模型之间传递数据

时间:2013-10-09 21:35:39

标签: c# asp.net mvvm

我有两页:

  1. Page 1
  2. Page 2
  3. 和两个具有相同属性的ViewModel:

    1. ViewModel1
      属性:
      • FIRSTNAME1
      • LastName1
    2. ViewModel2
      属性:
      • FIRSTNAME2
      • LastName2
    3. 现在我想在ViewModel1和ViewModel2之间传递数据(属性),并在第2页上检索这些数据。 我该如何实现这一目标?

3 个答案:

答案 0 :(得分:0)

您可以查看MVVMLight的Messenger。 Here是一个可以指导您的教程。基本上,我们的想法是使用独立于您的Views / ViewModels的信使向/向他们发送消息。您的Views / ViewModels注册并发送包含您要传递的属性值的特定消息。

答案 1 :(得分:0)

您既可以使用视图模型继承的父ViewModel,也可以使用Event Aggregator。 Here是一个使用Reactive Extensions的简单版本。

答案 2 :(得分:0)

您的页面可以像这样构建:

public class Page2 {

  public ViewModel1 VM1;

  public Page2() {
    VM1 = new ViewModel1(new ViewModel2());
  }
}

您的ViewModel1可能看起来像这样,带有传递属性:

public class ViewModel1 : Person {

  private ViewModel2 _vm2;

  public ViewModel1(ViewModel2 vm2) {
    _vm2 = vm2;
  }

  public override string FirstName {
    get { return _vm2.FirstName; }
  }

  public override string LastName {
    get { return _vm2.LastName; }
  }
}

我们假设您的ViewModel2有一些商业逻辑或其他东西

public class ViewModel2 : Person {
  //Etc
}

两者都继承自相同的基类:

public abstract class Person {
  public abstract string FirstName { get; }
  public abstract string LastName { get; }
}
相关问题