我有两个页面:
- 第 1 页
- 第2页
和两个具有相同属性的 ViewModel:
- ViewModel1
属性:- 名字1
- 姓氏1
- ViewModel2
属性:- 名字2
- 姓氏2
现在我想在 ViewModel1 到 ViewModel2 之间传递数据(属性),并在第 2 页上检索这些数据。我该如何实现呢?
您可以使用两个视图模型都继承自的父视图模型或事件聚合器。 这是一个使用 Reactive Extensions 的简单方法。
您的页面可以这样构建:
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; }
}