2013-05-13 1 views
5

У меня есть приложение MVVM WPF, которое я бы хотел реорганизовать для использования MvvmCross для поддержки реализаций WPF и Mono для Android.Композитные представления в MvvmCross

просмотров Нашего приложения состоят из:

  • панели инструментов, которая всегда видна
  • Панель навигации области
  • Основного вид область
  • Область всплывающего окна

Каждые из этих регионов является UserControl в главном окне приложения, и UiService просто свопирует представления в каждом регионе. В случае всплывающего окна это тоже просто UserControl в главном окне, которое изменяет видимость на Show или Hide вызывает UiService. UiService также принимает параметр контекста, который позволяет передавать информацию о состоянии в модель представления, которая будет показана.

Основные виды, как правило, представляют собой совокупность нескольких видов детей. В этих случаях модель основного вида создает модели дочернего представления, которые отображаются как свойства. Основное представление задает эти свойства как контекст данных дочерних представлений.

Я бы подумал, что MvvmCross определенно поддержит этот стиль композитных представлений, но я не мог найти пример такого. Существуют ли подходящие примеры MvvmCross? Каким будет рекомендуемый подход для внедрения в MvvmCross?

ответ

6

Я бы подумал, что MvvmCross, безусловно, поддержит этот стиль композитных представлений, но я не мог найти пример такого. Существуют ли подходящие примеры MvvmCross? Каким будет рекомендуемый подход для внедрения в MvvmCross?

Этот стиль не является стандартным для мобильных приложений - большинство мобильных приложений основаны на страницах.

Однако составные виды становятся все более распространенными в приложениях для планшетов - и даже у мобильных приложений есть свои исключения - например. вкладки, панорамы, всплывающие окна и т. д.

Чтобы обеспечить отображение различных видов отображения, каждая платформа UI MvvmCross предоставляет presenter, которую вы можете настроить, как вам нужно.

Этот класс presenter - это то, где вы можете выбрать, как вы хотите представить свои ViewModels и Views. Кроме того, поскольку это всего лишь класс C#, он может делегировать эту ответственность на столько других объектов, сколько захочет, что позволяет создавать все более сложные шаблоны панелей, всплывающих окон, вкладок, встроенных навигационных стеков и т. Д.

Для некоторых Информация об этом, в том числе ссылки на некоторые образцы, увидеть этот слайд палубе - https://speakerdeck.com/cirrious/presenters-in-mvvmcross

примеры WPF и IOS TwitterSearch может быть хорошим местом, чтобы начать на этом - https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch

+0

Просто примечание ... API Twitter устарел, который используется в Sample - TwitterSearch 'The Twitter REST API v1 больше неактивен. Перейдите на API v1.1. https: // dev.twitter.com/документы/API/1,1/overview.' – Syska

2

Помните, что вы можете показать 2 ViewModels на любой данная команда.

Например, если пользователь заполняет форму для входа, и вы загружаете составной пользовательский интерфейс, то покажите модель просмотра навигационной панели и модель основного вида.

Затем вы можете создать пользовательский презентатор для передачи макета соответствующих представлений.

Это звучит просто (и это так), но мне потребовалось некоторое время, чтобы понять это. Решение, продемонстрированное в учебнике TwitterSearch, в котором упоминается Stuart

2

Я создал плагин, в котором используется пользовательский презентатор, позволяющий отображать несколько ViewModels на той же странице, что и UserControls. Это также позволяет обычный вид навигации, так что вы можете использовать точные модели просмотра, чтобы иметь сложные взгляды на МОФ, Andoid таблетки, Windows Store или IPad, и страницы навигации на мобильных устройствах:

https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation