Пользовательский интерфейс мультиплатформенного приложения .NET (.NET MAUI) Picker отображает короткий список элементов, из которых пользователь может выбрать элемент.
CharacterSpacing( тип double) — это интервал между символами элемента, отображаемого элементом Picker.
FontAttributes тип FontAttributes, для которого по умолчанию используется FontAtributes.Noneзначение .
FontAutoScalingEnabledтип bool, который определяет, учитывает ли текст параметры масштабирования, заданные в операционной системе. Значение по умолчанию этого свойства равно true.
FontFamily тип string, для которого по умолчанию используется nullзначение .
FontSize тип double, который по умолчанию соответствует -1.0.
HorizontalTextAlignment( тип TextAlignment) — это горизонтальное выравнивание текста, отображаемого элементом Picker.
ItemsSource тип IList, исходный список элементов, отображаемых по умолчанию null.
SelectedIndex тип int, индекс выбранного элемента, который по умолчанию соответствует -1.
SelectedItem тип object, выбранный элемент, в котором по умолчанию используется nullзначение .
TextColor тип Color, цвет, используемый для отображения текста.
TextTransformтипа TextTransform, который определяет, следует ли преобразовывать регистр текста.
Title тип string, для которого по умолчанию используется nullзначение .
TitleColor тип Color, цвет, используемый для отображения Title текста.
VerticalTextAlignment( тип TextAlignment) — это вертикальное выравнивание текста, отображаемого элементом Picker.
Все свойства, за исключением ItemDisplayBindingобъектов, поддерживаются BindableProperty объектами, что означает, что их можно стильировать, а свойства могут быть целевыми объектами привязки данных. SelectedItem Свойства SelectedIndex имеют режим BindingMode.TwoWayпривязки по умолчанию, что означает, что они могут быть целевыми объектами привязки данных в приложении, использующем шаблон Model-View-ViewModel (MVVM). Сведения о настройке свойств шрифта см. в разделе "Шрифты".
При Picker первом отображении данные не отображаются. Вместо этого значение свойства Title отображается как заполнитель, как показано на следующем снимке экрана iOS:
Picker При получении фокуса отображаются его данные, а пользователь может выбрать элемент:
SelectedIndexChanged Вызывает Picker событие, когда пользователь выбирает элемент. После выбора выбранный элемент отображается в следующем Pickerэлементе:
ItemsSource Задание свойства отображаемым данным. Это рекомендуемый способ добавления данных в Pickerобъект. Дополнительные сведения см. в разделе "Задать свойство ItemsSource".
Добавление данных, отображаемых в коллекцию Items . Дополнительные сведения см. в разделе "Добавление данных в коллекцию элементов".
Установка свойства ItemsSource
Можно Picker заполнить данными, задав для нее IList свойство ItemsSource коллекции. Каждый элемент в коллекции должен иметь тип или производный от него object. Элементы можно добавить в XAML, инициализировав ItemsSource свойство из массива элементов:
Элементу x:Array требуется атрибут, указывающий Type тип элементов в массиве.
Эквивалентный код на C# выглядит так:
C#
var monkeyList = new List<string>();
monkeyList.Add("Baboon");
monkeyList.Add("Capuchin Monkey");
monkeyList.Add("Blue Monkey");
monkeyList.Add("Squirrel Monkey");
monkeyList.Add("Golden Lion Tamarin");
monkeyList.Add("Howler Monkey");
monkeyList.Add("Japanese Macaque");
Picker picker = new Picker { Title = "Select a monkey" };
picker.ItemsSource = monkeyList;
Реагирование на выбор элемента
Поддерживает Picker выбор одного элемента одновременно. Когда пользователь выбирает элемент, событие запускается, SelectedIndexChangedSelectedIndex свойство обновляется до целого числа, представляющего индекс выбранного элемента в списке, и SelectedItem свойство обновляется до object представления выбранного элемента. Свойство SelectedIndex — это отсчитываемое от нуля число, указывающее выбранный пользователем элемент. Если элемент не выбран, то в этом случае Picker при первом создании и инициализации SelectedIndex будет значение -1.
Примечание
Поведение выбора элементов в Picker iOS можно настроить с помощью конкретной платформы. Дополнительные сведения см. в разделе "Выбор элементов" в iOS.
В следующем примере XAML показано, как получить SelectedItem значение свойства из Picker:
Кроме того, обработчик событий можно выполнить при SelectedIndexChanged срабатывании события:
C#
voidOnPickerSelectedIndexChanged(object sender, EventArgs e)
{
var picker = (Picker)sender;
int selectedIndex = picker.SelectedIndex;
if (selectedIndex != -1)
{
monkeyNameLabel.Text = (string)picker.ItemsSource[selectedIndex];
}
}
В этом примере обработчик событий получает SelectedIndex значение свойства и использует значение для извлечения выбранного ItemsSource элемента из коллекции. Это функционально эквивалентно получению выбранного элемента из SelectedItem свойства. Каждый элемент в ItemsSource коллекции имеет тип object, поэтому его необходимо привести к отображению string .
Примечание
Можно Picker инициализировать для отображения определенного элемента, задав SelectedIndex или SelectedItem свойства. Однако эти свойства необходимо задать после инициализации ItemsSource коллекции.
Заполнение средства выбора данными с помощью привязки данных
Можно Picker также заполнить данными с помощью привязки данных для привязки свойства ItemsSource к IList коллекции. В XAML это достигается с расширением Binding разметки:
XAML
<PickerTitle="Select a monkey"ItemsSource="{Binding Monkeys}"ItemDisplayBinding="{Binding Name}" />
Ниже приведен эквивалентный код на C#:
C#
Picker picker = new Picker { Title = "Select a monkey" };
picker.SetBinding(Picker.ItemsSourceProperty, static (MonkeysViewModel vm) => vm.Monkeys);
picker.ItemDisplayBinding = Binding.Create(static (Monkey monkey) => monkey.Name);
В этом примере ItemsSource данные свойств привязываются к Monkeys свойству контекста привязки, который возвращает коллекцию IList<Monkey> . В следующем примере кода показан Monkey класс, содержащий четыре свойства:
При привязке к списку объектов необходимо указать, Picker какое свойство должно отображаться из каждого объекта. Это достигается путем задания ItemDisplayBinding свойства требуемому свойству из каждого объекта. В приведенных выше Picker примерах кода устанавливается отображение каждого Monkey.Name значения свойства.
Реагирование на выбор элемента
Привязка данных может использоваться для задания объекта значению SelectedItem свойства при изменении:
SelectedItem Данные свойств привязываются к SelectedMonkey свойству контекста привязки, который имеет типMonkey. Таким образом, когда пользователь выбирает элемент в Pickerобъекте, SelectedMonkey свойство будет присвоено выбранному Monkey объекту. Данные SelectedMonkey объекта отображаются в пользовательском интерфейсе Label и Image представлениях.
Примечание
SelectedIndex Оба SelectedItem свойства поддерживают двусторонняя привязка по умолчанию.
Добавление данных в коллекцию "Элементы"
Альтернативный процесс заполнения Picker данными заключается в добавлении данных для отображения данных в коллекцию только Items для чтения, которая имеет тип IList<string>. Каждый элемент в коллекции должен иметь тип string. Элементы можно добавить в XAML, инициализировав Items свойство со списком x:String элементов:
XAML
<PickerTitle="Select a monkey"><Picker.Items><x:String>Baboon</x:String><x:String>Capuchin Monkey</x:String><x:String>Blue Monkey</x:String><x:String>Squirrel Monkey</x:String><x:String>Golden Lion Tamarin</x:String><x:String>Howler Monkey</x:String><x:String>Japanese Macaque</x:String></Picker.Items></Picker>
Эквивалентный код на C# выглядит так:
C#
Picker picker = new Picker { Title = "Select a monkey" };
picker.Items.Add("Baboon");
picker.Items.Add("Capuchin Monkey");
picker.Items.Add("Blue Monkey");
picker.Items.Add("Squirrel Monkey");
picker.Items.Add("Golden Lion Tamarin");
picker.Items.Add("Howler Monkey");
picker.Items.Add("Japanese Macaque");
Помимо добавления данных с помощью Items.Add метода, данные также можно вставить в коллекцию с помощью Items.Insert метода.
Реагирование на выбор элемента
Поддерживает Picker выбор одного элемента одновременно. Когда пользователь выбирает элемент, SelectedIndexChanged событие запускается и SelectedIndex свойство обновляется до целого числа, представляющего индекс выбранного элемента в списке. Свойство SelectedIndex — это отсчитываемое от нуля число, указывающее выбранный пользователем элемент. Если элемент не выбран, то в этом случае Picker при первом создании и инициализации SelectedIndex будет значение -1.
Примечание
Поведение выбора элементов в Picker iOS можно настроить с помощью конкретной платформы. Дополнительные сведения см. в разделе "Выбор элементов" в iOS.
В следующем примере кода показан OnPickerSelectedIndexChanged метод обработчика событий, который выполняется при SelectedIndexChanged срабатывании события:
C#
voidOnPickerSelectedIndexChanged(object sender, EventArgs e)
{
var picker = (Picker)sender;
int selectedIndex = picker.SelectedIndex;
if (selectedIndex != -1)
{
monkeyNameLabel.Text = picker.Items[selectedIndex];
}
}
Этот метод получает SelectedIndex значение свойства и использует значение для получения выбранного Items элемента из коллекции. Так как каждый элемент в Items коллекции является элементом string, их можно отобразить Label без необходимости приведения.
Примечание
Можно Picker инициализировать для отображения определенного элемента, задав SelectedIndex свойство. SelectedIndex Однако свойство должно быть задано после инициализации Items коллекции.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET MAUI
.NET MAUI — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Создайте пользовательский интерфейс с привязкой данных. Пользовательский интерфейс автоматически обновляется на основе последних данных, а данные обновляются в ответ на изменения в пользовательском интерфейсе.