Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Как осуществить вызов userControl при помощи паттерна MVVM

#c_sharp #wpf #mvvm


Привет всем.

Решил измотать себя, при помощи WPF. Ну и конечно, паттерн MVVM :)

Разумеется, сразу же столкнулся с проблемой, как при помощи MVVM паттерна открыть
UserControl?

Конечно, нет проблем это сделать в самом View. Но, как же MVVM . Кто-нибудь может
привести пример в пару строк кода Как мне это реализовать. дело в том что в интернете
есть много описания паттерна MVVM, все ограничиваются написанием калькулятора, то бишь
на одной форме. В принципе я тоже пишу всегда на одной форме но в нужные моменты подставляю
контрол.  эмитируя переход на другую форму. Я не знаю правильно это или нет. но, мне
так удобней.
    


Ответы

Ответ 1



Популярный путь такой. Вы прописываете class MainVM : INotifyPropertyChanged { VM activePageVM; public VM ActivePageVM { get { return activePageVM; } set { activePageVM = value; NotifyPropertyChanged(); } } // обвеска для INotifyPropertyChanged } обычным образом. Теперь, ваше окно выглядит так: (можете ещё вокруг добавить общую обвеску, нужную на всех страницах). Осталось только сделать так, чтобы ваш ContentPresenter выбирал правильный UserControl в зависимости от типа VM. Это делается очевидной диспетчеризацией через DataTemplate: Эту диспетчеризацию поместите в App.xaml или куда-то ещё, где она видна в главном окне. Если вам надо где-то локально перекрыть отображение для какого-то типа, пользуйтесь локальными ресурсами, они всегда имеют приоритет.

Комментариев нет:

Отправить комментарий