База viewmodel не содержит свойства? В Wpf MVVM - PullRequest
2 голосов
/ 26 апреля 2011

Я реализовал своего рода волшебника. С несколькими окнами. Каждая модель представления каждого окна является подклассом одного базового суперкласса (также модель представления). В первом окне я заполняю свойство, которое находится в базовом классе. Но в следующем окне, если я хочу получить это свойство, оно равно 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; }
        }

Итак, свойство "shared" - это проверка, в первом окне я заполняю это:

(видовая модель первого окна, реализует модель выше)

 public string Pad
        {
            get { return pad; }
            set { pad = value;
            OnPropertyChanged("Pad");

            this.Examination = XmlConversionExamination.ReadExamination(value);
            Naam = this.Examination.Name;
            }
        }

Но тогда, если я хочу получить свойство "экспертиза" во втором окне, это дает нуль:

 public string Test
        {
            get {

                    return this.Examination.Name;             
            }
            set { test = value;
            OnPropertyChanged("Test");
            }
        }

(это во второй модели представления, также реализует базовую модель представления.) Так вот this.Examination = null. Это немного странно, потому что я установил свойство Examination в первом окне. Кто-то, у кого есть идея? Спасибо

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Если у вас есть две разные модели ViewModel, то у вас есть два экземпляра «базовой» модели ViewModel.Так что это ожидается, поскольку Examination является свойством экземпляра.

0 голосов
/ 26 апреля 2011

Мне кажется, что вы должны использовать один и тот же экземпляр ViewModel на своих "страницах". Это ViewModel будет содержать свойства на обеих страницах, но представление будет отображать только соответствующие на странице. Возможно, вы не захотите бросить свой собственный Wizard, может использовать что-то , например или , которое предлагает этот пост.

...