В этот пост Я обрисовываю подходы, обычно используемые для отображения диалогов из модели представления MVVM Light.
MVVM Light не имеет понятия регионов и не заставляет вас использовать одну конкретную парадигму для решения проблемы. Это оставляет вам большую свободу, однако, напротив, это также означает, что вы должны делать больше самостоятельно.
Если вам нужны регионы и плагины, возможно, лучше использовать более крупную каркасную конструкцию - например, Prism, Caliburn или Ocean (частично) - возможно. Если вы связаны с MVVM Light и нуждаетесь в этой функциональности, вам придется создать ее самостоятельно - отсюда и «легкая» часть в Имени: -)
Редактировать
Ваш (Сергей) комментарий заставил меня задуматься, поэтому я вышел, осмотрелся и нашел что-то, что соответствует вашим потребностям.
Майк Гамильтон реализовал логику проводник / экран на основе MVVM Light. В примерах не используется ViewModelLocator
, но я не вижу причин, по которым это не могло измениться (хотя не пробовал - время позволяет). Тем не менее, подход выглядит многообещающим. Примечание : может быть применимо только к WPF - образцы только для WPF и в нем нет навигации.
Bedides в исходном коде пакет также доступен как NuGet пакет .
Даже если вы хотите развернуть собственную реализацию, примеры, исходный код и запись в блоге дают вам хорошую отправную точку.
Если вы нацелены на WP7, то и Laurent Buginion и Джесси Либерти показали, как реализовать NavigationService
- который также вписывается в эту категорию.
Поскольку Silverlight и WP7 имеют много общего, подход NavigationService
также может быть преобразован для работы с Silverlight - на самом деле я сделал это в написанном мною приложении SL.
Джей Кимбл предоставляет шаблон, который реализует еще один подход для Silverlight.
Что касается «доминирующего» паттерна, который я бы сказал, для Siverlight / WP 7, это паттерн NavigationService
, для WPF - действительно, это не «доминирующий» паттерн, однако, есть некоторые претенденты (показан один).