Оболочка 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.