Xamarin Forms: используя Prism и / или ReactiveUI, возможно ли добиться вертикальной нарезки? - PullRequest
1 голос
/ 13 мая 2019

Я работаю над мобильным приложением в течение одной недели, для личного обучения и повышения квалификации.У меня есть некоторый опыт работы с WPF и MVVM, у меня нет опыта разработки мобильных приложений.

Идея заключается в создании кроссплатформенного приложения при тестировании некоторых принципов кодирования:

Я планирую использовать следующие компоненты:

  • Prism.Unity.Forms: кажется, обеспечивает структуру приложения, ioc, навигацию, кажется широко используемым и выполняется высококлассными людьми
  • ReactiveUI, ReactiveUI.XamForms, ReactiveUI.Fody: WhenAnyValue, ObservableAsPropertyAttribute, ReactiveAttribute ( учебник ), без их использования выглядит для меня огромной упущенной возможностью

ТекущийМоя Visual Studio имеет следующую структуру:

  • Csproj
    • ViewModels
      • CreateExercisePageViewModel
      • HomePageViewModel
    • Просмотров
      • CreateExercisePage
      • HomePage

Мне удалось выполнить следующее:

  • Установить домашнюю страницув качестве начальной страницы, содержащейся в NavigationPage, с использованием навигационных функций Prism.
  • Объявление именованной кнопки в XAML, установка ее свойства Command с помощью привязки OneWay, созданной в коде позади, с использованием функций ReactiveUI (как показано в учебном пособии, с использованием метода WhenActivation)
  • Перейдите квторая страница (CreateExercisePage), использующая навигацию Prism

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

Так чтоВопрос в следующем: Применимо ли вертикальное срезание к мобильным приложениям?

Я хотел бы реструктурировать свой проект с помощью вертикального среза, но при поиске статей о формах Xamarin мне было трудно.

Редактировать : мое понимание концепции вертикальной нарезки заключается в том, что вы должны группировать код, связанный с функцией, в одном физическом пространстве (папке).Таким образом, это дает разработчикам огромный намек на сплоченность этих файлов.

Учитывая, что мобильное приложение состоит из экранов, я предполагал группировать код по экрану независимо от их типа (представление, логика, постоянство).будет иметь смысл.

Переписав приложение, вы получите следующее csproj:

  • Csproj
    • Экраны
      • Home
        • HomePage
        • HomePageViewModel
      • CreateExercise
        • CreateExercisePage
        • CreateExercisePageViewModel

Добавление нового экрана будет означать добавление новой папки в папку «Экраны», что уменьшит риск изменения существующих файлов / логики.

1 Ответ

0 голосов
/ 13 мая 2019

Вертикальная нарезка немного похожа на MVVM, которую мы используем на Xamarin.Forms: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/mvvm Представление - это слой пользовательского интерфейса, модель представления помогает вам обрабатывать логический код, а модель представляет данные вашей базы данных.

Например, пользователь нажимает кнопку на слое вида, чтобы вызвать команду в модели вида.Затем эта команда может добавить новый продукт в свойство List этой модели представления.Поскольку это свойство списка было изменено, оно уведомит пользовательский интерфейс для ответа на это действие.

Более того, ваша первая архитектура более подходит:

  • ViewModels
    • CreateExercisePageViewModel
    • HomePageViewModel
  • Просмотров
    • CreateExercisePage
    • HomePage

Makeваши страницы разделены вашими моделями просмотра.

...