MVVM и несколько окон - PullRequest
       13

MVVM и несколько окон

3 голосов
/ 04 марта 2011

Я на стадии предварительного проектирования небольшого приложения, которое я хотел бы написать с использованием Caliburn.Micro и C # / WPF.Я все еще изучаю фреймворк, но мне нравится то, что я вижу до сих пор.

Приложение, которое я собираюсь создать, представляет собой утилиту поиска / сканирования памяти процесса, с разборкой ASM и возможностью просмотра памяти.Эти три проблемы - поиск / сканирование, дизассемблирование ASM и просмотр памяти - я бы хотел, чтобы их обрабатывали три или более отдельных окна.Часть поиска / сканирования будет включать в себя основную оболочку приложения, в то время как две другие функции (которые могут вызываться несколько раз одновременно) будут использовать отдельные окна, вызываемые из действий над оболочкой.

Мой вопрос таков: какЯ запускаю новые окна изнутри (или какой-то другой) модели вида?Я знаю, что должен передать другую модель представления для рендеринга в новом окне - но это новый бизнес окон, который смущает меня.

1 Ответ

3 голосов
/ 04 марта 2011

Caliburn.Micro предоставляет тип WindowManager с методом Show, который может отображать модель представления в новом окне, и если эта модель представления реализует соответствующие интерфейсы Caliburn.Micro, WindowManager обеспечит представлениемодель проходит обычный жизненный цикл (т.е. она вызывает OnActivate, OnDeactivate и т. д.).Если ваши модели представлений имеют тип Screen, то это будет так.

WindowManager реализует интерфейс IWindowManager, поэтому вы можете внедрить эту абстракцию в качестве зависимости в вашу ShellViewModel.

Если ассоциированное представление не Window, а UserControl, тогда WindowManager также обернет UserControl в Window, чтобы его можно было отобразить.

...