Комплексное представление в WPF
Я работаю над личным проектом. Я начал с предыдущего поста ( Архитектура приложения торговой точки).
Пытаюсь использовать - репозиторий - сервис и вид модал - вид подхода
Пожалуйста, смотрите прикрепленный файл изображения. Большинство моих окон будут иметь несколько видов.
Мои вопросы:
- Глядя в окна, считаете ли вы, что мой проект является хорошим кандидатом на CAG (Prism) или это излишество
- Смогу ли я получить модальные окна POPUp и общаться с ними из его родительского view- region-module.
- Несколько окон в Prism (при условии, что я могу создать несколько оболочек), сложна ли связь между ними
- Читайте на SO о создании сложных представлений с вложенными представлениями как свойствами. Это хороший подход или будет слишком много кода
Чем больше я смотрю на применение некоторого шаблона, тем больше я запутываюсь
Я уверен, что у некоторых из вас были подобные проблемы, и, возможно, ваш подход может решить проблемы для меня.
Спасибо Мар
2 ответа
Я не вижу ваш скриншот, но я могу дать вам небольшое руководство здесь. Недавно я настраивал оболочку многоцелевого (WPF/Silverlight) составного приложения, изучая библиотеки по ходу работы.
"Большинство моих окон будут иметь несколько видов". - это само по себе, вероятно, означает, что вам понравится то, что вы найдете в библиотеке составных приложений. И MVVM - идеальный образец для клиентской лицензии. В справочном приложении StockTrader они используют термин PresentationModel, но это, по сути, то же самое, что и MVVM.
Всплывающие модалы отлично работают как в WPF, так и в SL (с помощью расширения Toolkit, элемента управления ChildWindow). Вы будете общаться с ними так же, как и в обычном регионе, - добавляя представления и сервисы. Что мне особенно понравилось в этом, так это то, что вы можете определить область во всплывающем окне, зарегистрировать в нем представления, когда приложение (модуль) загружено (даже если сам регион еще не загружен), а затем, когда область всплывает, правильные взгляды вводятся в этот момент. Другими словами, вам не нужно вовлекаться в отсрочку внедрения представления, пока не отобразится регион, что я и ожидал сделать.
Не пробовал это - не могу комментировать.
Не уверен насчет "подвидов", но регионы внутри регионов, безусловно, возможны.
У Уэйна есть хорошие ответы для № 1 и № 2... Я получу № 3 и № 4.
3) Связь между представлениями, которые не используют одну и ту же модель представления, осуществляется через EventAggregator в Prism. Это очень простая в использовании модель подписчика Publisher для сообщений. У вас не будет проблем с пониманием этого.
4) Мне не нравится идея иметь представление как свойство модели представления. Это проблема разделения интересов. Вы стремитесь к тому, чтобы ваши ViewModel не зависели от интерфейса, и это означало бы, что слишком много интерфейса просачивалось в ваши viewmodels. 2 приемлемые альтернативы будут
- Под ViewModels как свойства вашей ViewModel. Вы можете использовать DataTemplates, чтобы предоставить им внешний вид, не указывая интерфейс в ViewModel.
- Субрегионы. Это совершенно приемлемо. Иногда это может быть сложно в зависимости от вашего пользовательского интерфейса, потому что вы в конечном итоге попытаетесь отслеживать ваши области RegionManager, но это выполнимо.
HTH, Андерсон