MVVM Light активация экрана - какой шаблон рекомендуется? - PullRequest
1 голос
/ 14 октября 2011

Под «активацией экрана» я подразумеваю концепцию от Caliburn Micro , когда вы хотите либо отобразить что-то в регионе, который не был занят, либо переключить один вид на другой. В Caliburn Micro все это делается с помощью метода ViewModel путем создания и активации другой ViewModel. Мне кажется, что в MVVM Light, учитывая его подход «View First», для достижения того же самого вам нужно использовать код позади и просто переключать содержимое хоста представления с другим представлением.

Мне было интересно, можно ли это сделать без кода и есть ли доминирующий шаблон для этой задачи.

1 Ответ

1 голос
/ 14 октября 2011

В этот пост Я обрисовываю подходы, обычно используемые для отображения диалогов из модели представления 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 - действительно, это не «доминирующий» паттерн, однако, есть некоторые претенденты (показан один).

...