4

我有两个页面:

  1. 第 1 页
  2. 第2页

和两个具有相同属性的 ViewModel:

  1. ViewModel1
    属性:
    • 名字1
    • 姓氏1
  2. ViewModel2
    属性:
    • 名字2
    • 姓氏2

现在我想在 ViewModel1 到 ViewModel2 之间传递数据(属性),并在第 2 页上检索这些数据。我该如何实现呢?

4

3 回答 3

0

你可以看看MVVMLight的 Messenger。是一个可以指导您前进的教程。基本上,这个想法是使用一个独立于您的视图/视图模型的信使来从/向它们发送消息。您的 Views/ViewModels 注册并发送包含您要传递的属性值的特定消息。

于 2013-10-09T21:43:12.693 回答
0

您可以使用两个视图模型都继承自的父视图模型或事件聚合器。 是一个使用 Reactive Extensions 的简单方法。

于 2013-10-09T21:43:28.687 回答
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; }
}
于 2013-10-09T21:49:09.103 回答