Compartir a través de


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.