C# MVVM - общий объект - NotifyOfPropertyChange - PullRequest
0 голосов
/ 27 мая 2020

Я делаю вводный c# проект MVVM (Caliburn.Micro), и я вставляю объект «задание» в каждую модель просмотра, чтобы информация о вакансии была доступна везде. что изменения внедренного объекта, на которые может повлиять метод в одной модели представления, будут отражены во всех моделях представления, и, похоже, так оно и есть, однако как будут обновлены связанные свойства, связанные с этим внедренным объектом?

Например, ниже: экземпляр JobClass передается и изменяется MenuBarViewModel. Как можно вызвать NotifyOnPropertyChange () в свойстве в MainPanelViewModel, чтобы связанный элемент управления xaml в связанном представлении улавливал изменения в базовом члене.

Или это не так, как должно работать. Это то, чем должен управлять агрегатор событий? Я надеялся, что выполнение задания упростит ситуацию, или это проблема с глобальной переменной ... Любые советы приветствуются!

Хануман ....

// MainWindowViewModel

public class MainWindowViewModel
    {

        private JobClass _jobClass;
        private readonly IEventAggregator _eventAggregator;

        public MenuBarViewModel MenuBarViewModel { get; set; }
        public MainPanelViewModel MainPanelViewModel { get; set; }

        public MainWindowViewModel()
        {
            _eventAggregator = new EventAggregator();
            _jobClass= new JobClass ();

            this.MenuBarViewModel = new MenuBarViewModel(_eventAggregator, _jobClass);
            this.MainPanelViewModel = new MainPanelViewModel(_eventAggregator, _jobClass);

        }
   }

// MenuBarViewModel

 public class MenuBarViewModel: PropertyChangedBase
    {
        IEventAggregator _events;
        JobClass _jobClass;

        public MenuBarViewModel(IEventAggregator eventAggregator, JobClass jobClass)
        {
            _events = eventAggregator;
            _jobClass = JobClass;
        }

        public SomeMethod()
        {
          _jobClass.MethodToAddSomedata();
         }

// MainPanelViewModel

public class MainPanelViewModel : PropertyChangedBase
    {
        IEventAggregator _events;
        JobClass _jobClass;

         public JobClass JobCase
        {
            get { return _jobClass; }
            set
            {
                _jobClass= value;
                NotifyOfPropertyChange(() => JobCase);
            }
        }

}

...