我有两个页面:
- 页面1
- 页面2
还有两个具有相同属性的视图模型:
- ViewModel1
属性:- FirstName1
- LastName1
- ViewModel2
属性:- FirstName2
- LastName2
现在我想在ViewModel1和ViewModel2之间传递数据(属性),并在页面2上检索这些数据。如何实现?
我有两个页面:
还有两个具有相同属性的视图模型:
现在我想在ViewModel1和ViewModel2之间传递数据(属性),并在页面2上检索这些数据。如何实现?
你的页面可以像这样构建:
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; }
}
你可以选择使用一个父ViewModel,让两个ViewModel继承它,或者使用事件聚合器。这里是一个使用响应式扩展的简单示例。