我实现了一种向导。有多个窗口。每个窗口的每个视图模型都是一个基础超类(也是视图模型)的子类。在第一个窗口中,我填充了一个属性,该属性位于基类中。但是在下一个窗口中,如果我想获取该属性,则为null。这很烦人,我真的不知道这是怎么回事。
这是我的BaseViewModel:
public abstract class WijzigToetsBaseViewModel : INotifyPropertyChanged
{
#region Fields
Examination exam;
#endregion // Fields
#region Constructor
protected WijzigToetsBaseViewModel()
{
}
#endregion // Constructor
#region Properties
public Examination Examination
{
set { if(value != null)
exam = value; this.OnPropertyChanged("Examination");
}
get { return exam; }
}
所以我的“共享”属性是检查,在第一个窗口中,我填写了这个:
(第一个窗口的viewmodel,实现上面的模型)
public string Pad
{
get { return pad; }
set { pad = value;
OnPropertyChanged("Pad");
this.Examination = XmlConversionExamination.ReadExamination(value);
Naam = this.Examination.Name;
}
}
但是,如果我想在第二个窗口中获取属性“examination”,它会给出null:
public string Test
{
get {
return this.Examination.Name;
}
set { test = value;
OnPropertyChanged("Test");
}
}
(这是在第二个viewmodel中,也实现了基本的viewmodel。)所以这里this.Examination = null。这有点奇怪,因为我在第一个窗口中设置了Examination属性。有想法的人? 感谢
答案 0 :(得分:1)
如果您有两个不同的ViewModel,那么您就有两个“基础”ViewModel实例。所以这是预期的,因为Examination是一个实例属性。
答案 1 :(得分:0)
听起来我应该在不同的“页面”中使用相同的ViewModel
实例。 ViewModel
将包含两个页面上的属性,但View只会在页面上显示相关的属性。您可能不想推送自己的Wizard
,可能会使用like this或this post suggests.