Комплексное представление в WPF

Я работаю над личным проектом. Я начал с предыдущего поста ( Архитектура приложения торговой точки).

Пытаюсь использовать - репозиторий - сервис и вид модал - вид подхода

Пожалуйста, смотрите прикрепленный файл изображения. Большинство моих окон будут иметь несколько видов.

Мои вопросы:

  1. Глядя в окна, считаете ли вы, что мой проект является хорошим кандидатом на CAG (Prism) или это излишество
  2. Смогу ли я получить модальные окна POPUp и общаться с ними из его родительского view- region-module.
  3. Несколько окон в Prism (при условии, что я могу создать несколько оболочек), сложна ли связь между ними
  4. Читайте на SO о создании сложных представлений с вложенными представлениями как свойствами. Это хороший подход или будет слишком много кода

Чем больше я смотрю на применение некоторого шаблона, тем больше я запутываюсь

Я уверен, что у некоторых из вас были подобные проблемы, и, возможно, ваш подход может решить проблемы для меня.

Спасибо Мар

http://www.flickr.com/photos/themarworld/3820178039/

2 ответа

Решение

Я не вижу ваш скриншот, но я могу дать вам небольшое руководство здесь. Недавно я настраивал оболочку многоцелевого (WPF/Silverlight) составного приложения, изучая библиотеки по ходу работы.

  1. "Большинство моих окон будут иметь несколько видов". - это само по себе, вероятно, означает, что вам понравится то, что вы найдете в библиотеке составных приложений. И MVVM - идеальный образец для клиентской лицензии. В справочном приложении StockTrader они используют термин PresentationModel, но это, по сути, то же самое, что и MVVM.

  2. Всплывающие модалы отлично работают как в WPF, так и в SL (с помощью расширения Toolkit, элемента управления ChildWindow). Вы будете общаться с ними так же, как и в обычном регионе, - добавляя представления и сервисы. Что мне особенно понравилось в этом, так это то, что вы можете определить область во всплывающем окне, зарегистрировать в нем представления, когда приложение (модуль) загружено (даже если сам регион еще не загружен), а затем, когда область всплывает, правильные взгляды вводятся в этот момент. Другими словами, вам не нужно вовлекаться в отсрочку внедрения представления, пока не отобразится регион, что я и ожидал сделать.

  3. Не пробовал это - не могу комментировать.

  4. Не уверен насчет "подвидов", но регионы внутри регионов, безусловно, возможны.

У Уэйна есть хорошие ответы для № 1 и № 2... Я получу № 3 и № 4.

3) Связь между представлениями, которые не используют одну и ту же модель представления, осуществляется через EventAggregator в Prism. Это очень простая в использовании модель подписчика Publisher для сообщений. У вас не будет проблем с пониманием этого.

4) Мне не нравится идея иметь представление как свойство модели представления. Это проблема разделения интересов. Вы стремитесь к тому, чтобы ваши ViewModel не зависели от интерфейса, и это означало бы, что слишком много интерфейса просачивалось в ваши viewmodels. 2 приемлемые альтернативы будут

  • Под ViewModels как свойства вашей ViewModel. Вы можете использовать DataTemplates, чтобы предоставить им внешний вид, не указывая интерфейс в ViewModel.
  • Субрегионы. Это совершенно приемлемо. Иногда это может быть сложно в зависимости от вашего пользовательского интерфейса, потому что вы в конечном итоге попытаетесь отслеживать ваши области RegionManager, но это выполнимо.

HTH, Андерсон

Другие вопросы по тегам