Общие сведения об оболочке Xamarin.Forms
Оболочка Xamarin.Forms упрощает разработку мобильных приложений, предоставляя основные возможности, которые необходимы для большинства мобильных приложений, такие как:
- единое место для описания визуальной структуры приложения;
- общий пользовательский интерфейс навигации;
- схема навигации на основе URI, которая позволяет переходить на любую страницу в приложении;
- интегрированный обработчик поиска.
Кроме того, приложения оболочки получают более высокую скорость отрисовки и снижение потребления памяти.
Внимание
Оболочку можно внедрить в уже существующие приложения, сразу же получив преимущества улучшения навигации, производительности и расширяемости.
Визуальная иерархия приложения
Приложения оболочки Xamarin.Forms определяют визуальную иерархию приложения, описанную в классе, подклассом которого является класс Shell
. Этот класс может состоять из трех основных иерархических объектов:
FlyoutItem
илиTabBar
. ОбъектFlyoutItem
представляет один или несколько элементов всплывающего меню. Он требуется, если шаблон навигации требует использования всплывающего меню. ОбъектTabBar
представляет нижнюю панель вкладок. Он требуется, если навигация в приложении начинается с нижней панели вкладок (когда всплывающее меню не требуется).Tab
представляет сгруппированное содержимое с навигацией по нижним вкладкам.- Объект
ShellContent
, представляющий объектыContentPage
для каждой вкладки.
Эти объекты не представляют собой какие-либо элементы пользовательского интерфейса, они служат лишь для организации визуальной структуры приложения. Оболочка принимает эти объекты и создает пользовательский интерфейс навигации для содержимого.
Примечание.
Страницы в приложениях оболочки создаются по запросу в ответ на навигацию.
Дополнительные сведения см. в разделе Создание приложения оболочкиXamarin.Forms.
Пользовательский интерфейс навигации
Пользовательский интерфейс навигации, предоставляемый оболочкой Xamarin.Forms, основан на всплывающих окнах и вкладках. Верхний уровень навигации в приложении оболочки — это всплывающее меню или нижняя панель вкладок, выбор которых обусловлен требованиями навигации в приложении. В следующем примере показано приложение, в котором для верхнего уровня навигации используется всплывающее меню:
В этом примере некоторые всплывающие элементы дублируются как элементы панели вкладок. Однако существуют также элементы, доступ к которым возможен только из всплывающего окна. Выбор элемента приводит к отображению нижней вкладки, которая представляет выбранный элемент:
Примечание.
Если всплывающее меню отсутствует, нижняя панель вкладок считается верхним уровнем навигации в приложении.
На каждой вкладке на панели вкладок отображается ContentPage
. Но если вкладка содержит более одной страницы, перемещение по страницам осуществляется с помощью верхней панели вкладок.
На вкладке можно перемещаться по дополнительным объектам ContentPage
, называемым страницами сведений:
Оболочка использует улучшенные возможности навигации по интерфейсу на основе URI, позволяя переходить на любую страницу в приложении без соблюдения строгой иерархии. Кроме того, есть возможность перемещаться в обратном направлении без обязательного посещений всех страниц в стеке навигации. Дополнительные сведения см. в разделе Навигация по оболочке Xamarin.Forms.
Поиск (Search)
Оболочка Xamarin.Forms включает встроенные функции поиска, предоставляемые классом SearchHandler
. Чтобы добавить на страницу функцию поиска, добавьте производный объект SearchHandler
. После этого в верхней части страницы появится поле поиска. Когда в такое поле поиска вводится текст, область поисковых подсказок может заполняться данными:
Затем, когда результат выбирается из области вариантов, можно выполнить пользовательскую логику, например переход на страницу сведений.
Дополнительные сведения см. в разделе Поиск по оболочке Xamarin.Forms.
Поддержка платформы
Оболочка Xamarin.Forms полностью доступна в iOS и Android, но лишь частично доступна на универсальной платформе Windows (UWP). Кроме того, сейчас оболочка в UWP является экспериментальной и может использоваться только посредством добавления следующей строки кода в класс App
в проекте UWP перед вызовом Forms.Init
:
global::Xamarin.Forms.Forms.SetFlags("Shell_UWP_Experimental");
Дополнительные сведения о состоянии оболочки в UWP см. на странице проектов оболочки Xamarin.Forms на сайте github.com.