Adición de datos a la colección de elementos de un selector
La vista del selector es un control para seleccionar un elemento de texto de una lista de datos. En este artículo se explica cómo rellenar un selector con datos agregándolo a la colección de elementos y cómo responder a la selección de elementos por parte del usuario.
Rellenado de un selector con datos
Antes de Xamarin.Forms versión 2.3.4, el proceso para rellenar un elemento Picker
con datos era agregar los datos que se mostrarán a la colección Items
de solo lectura, que es de tipo IList<string>
. Cada elemento de la colección debe ser de tipo string
. Los elementos se pueden agregar en XAML inicializando la propiedad Items
con una lista de elementos x:String
:
<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>
El código de C# equivalente se muestra a continuación:
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");
Además de agregar datos mediante el método Items.Add
, los datos también se pueden insertar en la colección mediante Items.Insert
.
Respuesta a la selección de elementos
Picker
admite la selección de un elemento a la vez. Cuando un usuario selecciona un elemento, el evento SelectedIndexChanged
se desencadena y la propiedad SelectedIndex
se actualiza a un entero que representa el índice del elemento seleccionado en la lista. La propiedad SelectedIndex
es un número de base cero que indica el elemento seleccionado por el usuario. Si no se selecciona ningún elemento, que es el caso cuando Picker
se crea e inicializa por primera vez, SelectedIndex
será -1.
Nota:
El comportamiento de selección de elementos en Picker
se puede personalizar en iOS con un elementos específico de la plataforma. Para más información, consulte Control de la selección de elementos del selector.
En el ejemplo de código siguiente se muestra el método de controlador de eventos OnPickerSelectedIndexChanged
, que se ejecuta cuando se desencadena el evento SelectedIndexChanged
:
void OnPickerSelectedIndexChanged(object sender, EventArgs e)
{
var picker = (Picker)sender;
int selectedIndex = picker.SelectedIndex;
if (selectedIndex != -1)
{
monkeyNameLabel.Text = picker.Items[selectedIndex];
}
}
Este método obtiene el valor de propiedad SelectedIndex
y usa el valor para recuperar el elemento seleccionado de la colección Items
. Dado que cada elemento de la colección Items
es string
, se puede mostrar mediante un Label
sin necesidad de una conversión.
Nota:
Picker
se puede inicializar para mostrar un elemento específico estableciendo la propiedad SelectedIndex
. Sin embargo, la propiedad SelectedIndex
debe establecerse después de inicializar la colección Items
.