2016-01-14 4 views
-1

Итак, я хочу сделать многостраничное приложение (17 страниц), и у меня есть каждая страница, представленная классом. Является ли хорошей идеей использовать статические поля в каждом классе, чтобы я мог легко получить доступ ко всем их на любой странице (классе)?WPF многостраничное приложение

+0

Не могли бы вы привести пример того, какую информацию вы хотели бы поделиться между вашими классами? Создание нескольких полей, статических, чтобы иметь возможность делиться ими, похоже на взлома. – Starceaker

+0

Скажем, например, у меня есть список, который собирает некоторые значения со страницы 7, а также со страницы 10, а затем все эти значения читаются на странице 15. – Ivan

+2

Я думаю, что вы должны использовать класс модели, в этом классе вы можете сохранить данные и то при загрузке страницы вы можете получить доступ к своей модели и получить все данные, которые вам нужно показать. – ganchito55

ответ

1

Примечание: это первая идея, которая приходит на ум. Я делюсь этим, так как это может помочь вам продолжить, но, вероятно, есть более чистые/лучшие варианты.

Это простой пример класса, содержащего список строк. Вы создаете экземпляр «sharedClass» и передаете его вместе с конструктором каждого из классов Page.

internal class Test : INotifyPropertyChanged 
    { 
     private ObservableCollection<string> _sharedValues; 

     public Test() 
     { 
      SharedValues = new ObservableCollection<string>(); 
     }   

     public ObservableCollection<string> SharedValues 
     { 
      get { return _sharedValues; } 
      set 
      { 
       _sharedValues = value; 
       OnPropertyChanged(); 
      } 
     } 

     #region NotifyPropertyChanged 

     public event PropertyChangedEventHandler PropertyChanged; 

     protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
     { 
      PropertyChangedEventHandler handler = PropertyChanged; 
      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 

     #endregion 
    } 

инициализации:

public void Initalize() 
     { 
      var sharedModel = new Test(); 

      Page7 page1 = new Page7(sharedModel); 
      Page10 page1 = new Page10(sharedModel); 
      Page15 page1 = new Page15(sharedModel); 
     }