将数据添加到选取器的项集合

选取器视图是用于从数据列表中选择文本项的控件。 本文介绍如何通过将选取器添加到项集合来用数据填充选取器,以及如何响应用户的项选择。

用数据填充选取器

在 Xamarin.Forms 2.3.4 之前,向 Picker 填充数据的过程是将要显示的数据添加到只读的 Items 集合中,该集合的类型为 IList<string>。 集合中的每个项都必须是 string 类型。 通过使用 x:String 项的列表初始化 Items 属性,可以在 XAML 中添加项:

<Picker Title="Select a monkey"
        TitleColor="Red">
  <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# 代码如下所示:

var picker = new Picker { Title = "Select a monkey", TitleColor = Color.Red };
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。

注意

可以在 iOS 上以特定于平台的方式自定义 Picker 中的项选择行为。 有关详细信息,请参阅控制选取器项选择

下面的代码示例演示 OnPickerSelectedIndexChanged 事件处理程序方法,该方法在 SelectedIndexChanged 事件触发时执行:

void OnPickerSelectedIndexChanged(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 显示,而不需要强制转换。

注意

通过设置 SelectedIndex 属性,可以将 Picker 初始化为显示特定的项。 但是,必须在初始化 Items 集合之后设置 SelectedIndex 属性。