将数据添加到选取器的项集合
选取器视图是用于从数据列表中选择文本项的控件。 本文介绍如何通过将选取器添加到项集合来用数据填充选取器,以及如何响应用户的项选择。
用数据填充选取器
在 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。
下面的代码示例演示 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
属性。