Xamarin.Forms Shell

Автор:

learn.microsoft.com

Оболочка Xamarin.Forms Shell снижает сложность разработки мобильных приложений, предоставляя фундаментальные функции, необходимые большинству приложений, включая:

  • единое место для описания визуальной иерархии приложения;
  • единый пользовательский опыт навигации;
  • схема навигации на основе URI, позволяющая переходить на любую страницу приложения;
  • интегрированный обработчик поиска.

Кроме того, использование оболочки Shell позволяет увеличить скорость рендеринга и снизить потребление памяти.

Важно. Существующие приложения могут использовать оболочку Shell, что даст дополнительные преимущества от улучшений навигации, производительности и расширяемости.

Визуальная иерархия приложения

В приложении Xamarin.Forms Shell визуальная иерархия приложения описывается классом, который является подклассом класса Shell. Этот класс может состоять из трех основных иерархических объектов:

  • FlyoutItem или TabBar. FlyoutItem представляет один или несколько элементов во всплывающем окне и должен использоваться, когда навигация в приложении требует всплывающего окна. TabBar представляет нижнюю панель вкладок и используется в том случае, когда навигация приложения начинается с нижних вкладок, и не требуется всплывающее меню.
  • Tab, представляющий сгруппированное содержимое, навигация по которому осуществляется с помощью нижних вкладок.
  • ShellContent, который представляет объекты ContentPage для каждой вкладки.

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

Примечание. В приложениях Shell страницы создаются по требованию в ответ на навигацию.

Пользовательский интерфейс навигации

Навигация, предоставляемая Xamarin.Forms Shell, основана на всплывающих окнах и вкладках. Верхним уровнем навигации в приложении Shell является либо всплывающая панель, либо нижняя панель вкладок, в зависимости от навигационных требований приложения. В следующем примере показано приложение, в котором верхним уровнем навигации является всплывающая панель:

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

Примечание. Когда всплывающее окно не открыто, нижняя панель вкладок может считаться верхним уровнем навигации в приложении.

Внутри каждой вкладки можно переходить к дополнительным объектам ContentPage, которые известны как детальные страницы:

Shell использует навигацию на основе URI, которая позволяет переходить к любой странице приложения без необходимости следовать установленной иерархии навигации. Кроме того, она также предоставляет возможность навигации назад без необходимости посещения всех страниц в навигационном стеке.

Поиск

Xamarin.Forms Shell включает встроенную функцию поиска, которая обеспечивается классом SearchHandler. Возможность поиска может быть добавлена на страницу путем размещения объекта SearchHandler. В результате в верхней части страницы появляется окно поиска. Когда информация вводится в поле поиска, в области поисковых подсказок выводятся данные:

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

Поддержка платформы

Xamarin.Forms Shell полностью доступен на iOS и Android, но лишь частично на Universal Windows Platform (UWP). Кроме того, Shell в настоящее время является экспериментальной на UWP и может быть использована только путем добавления следующей строки кода в класс App в вашем UWP-проекте перед вызовом Forms.Init:

global::Xamarin.Forms.Forms.SetFlags("Shell_UWP_Experimental");

Более подробную информацию о состоянии Shell в UWP можно найти на сайте Xamarin.Forms Shell Project Board на github.com.

Материалы по теме