Это segmented control. В Xamarin.Forms по умолчанию не поддерживается поддержка по умолчанию, вероятно, потому, что это не обычный элемент управления на всех трех платформах.
Существует несколько способов, если вы все еще хотите использовать его. В основном они разбиваются на два сценария: вы либо используете настоящий собственный элемент управления, либо должны создавать разные представления для iOS и других платформ, которые вы хотите использовать. Или вы имитируете сегментированный элемент управления, например, FreshEssentials NuGet by Michael Ridland. Их больше.
Если вы выберете последнюю реализацию, это будет легко и может быть выполнено прямо из XAML.
Если вы выберете первый вариант, вы можете либо сделать это с помощью custom renderer, либо с помощью функции Native Embedding (Xamarin.Forms 2.2.0+). Я написал об этом blogpost, но вот основные сведения. Я предполагаю, что вы используете XAML для моделирования вашего интерфейса.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:EmbedNativeAwesomeness"
xmlns:ios="clr-namespace:UIKit;assembly=Xamarin.iOS;targetPlatform=iOS"
x:Class="EmbedNativeAwesomeness.EmbedNativeAwesomenessPage">
<!-- Rest of page here -->
</ContentPage>
Сначала добавьте декларацию пространства имен ios на свою страницу. Обратите внимание на то, как в нем есть тег targetPlatform
, что означает, что это будет включено только в том случае, когда нацелен проект iOS.
Теперь с префиксом ios:
вы можете получить доступ ко всем элементам управления платформой iOS непосредственно в Forms, в XAML.
Таким образом, объявление сегментированного элемента управления, вероятно, будет примерно таким: <ios:UISegmentedControl />
и указав подходящие свойства для ваших нужд.
Есть некоторые недостатки этого метода прямо сейчас, но я уверен, что вы можете обойти его. Для получения дополнительной информации проверьте мой блогпост (и сопровождающий sample code) или еще несколько ресурсов here.
Вы хотите, чтобы всплывающее меню вроде этого или панели инструментов? Если есть только 2 варианта, вы можете использовать переключатель –
. Я бы предпочел всплывающее меню, подобное изображению, которое я разместил. Разумеется, возможен и коммутатор, но я хочу текст по каждой опции. – Martman
Почему вы не используете ContentView? Вы можете либо сделать это модальным, либо просто добавить детей на нужную вам страницу –