Я пишу довольно масштабное настольное WPF-приложение с использованием шаблона MVVM. Я застрял на некоторое время, когда мои общие свойства обновлялись в представлении, отличном от того, в котором он обновлялся.
У меня есть RibbonWindow MainView
, который содержит ContentControl
, который отображает оставшиеся просмотры по одному в зависимости от выбора пользователя. У меня есть BaseViewModel
класс, который расширяет все ViewModels. Помимо прочего, этот класс предоставляет интерфейс INotifyPropertyChanged и содержит свойство static
типа CommonDataStore
. Этот класс также реализует интерфейс INotifyPropertyChanged и содержит свойства, которые должны быть доступны каждому ViewModel.
Теперь, хотя я могу получить доступ и успешно обновить свойства CommonDataStore
из любой ViewModel, проблема в том, что WPF Framework будет уведомлять только те свойства, которые изменились в текущем представлении. Поэтому, хотя общие значения были обновлены в других моделях представления, их связанные представления не обновляются.
Одним из примеров из моего приложения является экран входа в систему: когда пользователь входит в систему, мой LogInView обновляется новой информацией (т.е. полным именем) из базы данных, но данные пользователя в MainView не отображаются.
Прочитав несколько других постов, я также попытался реализовать класс CommonDataStore
как Singleton, но это не помогло. Я мог бы также просто передать ссылку на этот общий объект данных в конструктор каждой модели представления из MainViewModel
, но я не уверен, что это правильный путь.
Я также обнаружил, что в WPF свойства static
обрабатываются как постоянные значения. Кажется, они просто прочитали значение один раз.
Так что, в любом случае, все мои попытки провалились. Мне было интересно, что стандартный способ сделать это? В частности, мне нужно иметь возможность связываться с общими свойствами и обновлять все мои ViewModels и Views при изменении любого общего значения. Любая помощь будет принята с благодарностью. Большое спасибо заранее.
Редактировать >> Действительно? Никто не использует переменные всего приложения в приложении MVFM WPF?
Я удалил статическую часть объявления свойства Common и просто передаю копию в каждую ViewModel по отдельности. Кажется, это работает, но мне бы очень хотелось узнать, как другие подходят к этой ситуации. Пожалуйста, ответьте, просто дайте мне знать, как вы организуете данные этого приложения.