基本viewmodel不包含属性?在Wpf MVVM中

时间:2011-04-26 11:29:26

标签: wpf mvvm null properties

我实现了一种向导。有多个窗口。每个窗口的每个视图模型都是一个基础超类(也是视图模型)的子类。在第一个窗口中,我填充了一个属性,该属性位于基类中。但是在下一个窗口中,如果我想获取该属性,则为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属性。有想法的人? 感谢

2 个答案:

答案 0 :(得分:1)

如果您有两个不同的ViewModel,那么您就有两个“基础”ViewModel实例。所以这是预期的,因为Examination是一个实例属性。

答案 1 :(得分:0)

听起来我应该在不同的“页面”中使用相同的ViewModel实例。 ViewModel将包含两个页面上的属性,但View只会在页面上显示相关的属性。您可能不想推送自己的Wizard,可能会使用like thisthis post suggests.