У меня есть другой вопрос для моего приложения WPF / MVVM, над которым я работаю некоторое время. Основная идея состоит в том, чтобы использовать главное окно, обеспечивающее панель навигации и ContentControl
.
. Различные "Модули" построены как UserControl
с каждым собственным ViewModel.
. Основной вызов основной видовой модели для запуска модуля:
private void ShowAddressModule() {
ContentControlBindingProperty = new AddressModule(new AddressModuleViewModel);
}
. В реальном приложении видовые модели предварительно загружены и т. д., но запуск более или менее одинаков.
Модель основного представления содержит логическое свойство LongRunningOperation
для выполнения нескольких операций в главном окне во время любой длительной операции. Как пример, показывающий загрузку изображения или отключение основной навигации при загрузке нового модуля или чего-либо еще.
Так что моя идея состоит в том, чтобы предоставить модулям (их моделям представления) возможность активировать этот «режим». Пример того, как это может выглядеть в модели представления модулей:
private void LoadContactList() {
MainWindow.LongRunningOperation = true;
LoadAllContactsInAThread(); /*Takes a long time*/
MainWindow.LongRunningOperation = false;
}
Я попытался пометить свойство как статическое и общедоступное, но это не будет работать из-за события OnPropertyChanged
.
Если возможно, было бы замечательно, если бы решение можно было применить и к методам (включая параметры) из главного окна, чтобы (например, модули) могли использовать в качестве примера родительскую строку состояния или около того.
MainWindow.ShowErrorMessageInStatusBar("The error xyz occured!");
Надеюсь, я описал достаточно хорошо, в чем моя идея ... И, надеюсь, кто-нибудь может дать мне необходимый совет, как справиться с этим требованием.
Заранее спасибо за любые подсказки
С уважением Маркус