我有两页:
和两个具有相同属性的ViewModel:
现在我想在ViewModel1和ViewModel2之间传递数据(属性),并在第2页上检索这些数据。 我该如何实现这一目标?
答案 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; }
}