Adicionar dados à coleção de itens do seletor

O modo de exibição Seletor é um controle para selecionar um item de texto em uma lista de dados. Este artigo explica como preencher um Seletor com dados adicionando-o à coleção Items e como responder à seleção de itens pelo usuário.

Preenchendo um Seletor com dados

Antes da Xamarin.Forms versão 2.3.4, o processo para preencher um Picker com dados era adicionar os dados a serem exibidos à coleção somente Items leitura, que é do tipo IList<string>. Cada item na coleção deve ser do tipo string. Itens podem ser adicionados em XAML inicializando a propriedade Items com uma lista de itens 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>

O código C# equivalente é mostrado abaixo:

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");

Além de adicionar dados usando o método Items.Add, os dados também podem ser inseridos na coleção usando o método Items.Insert.

Respondendo à seleção de itens

Um Picker dá suporte à seleção de um item de cada vez. Quando um usuário seleciona um item, o evento SelectedIndexChanged é acionado e a propriedade SelectedIndex é atualizada para um inteiro que representa o índice do item selecionado na lista. A propriedade SelectedIndex é um número baseado em zero que indica o item que o usuário selecionou. Se nenhum item for selecionado, que é o caso quando o Picker primeiro é criado e inicializado, SelectedIndex será -1.

Observação

O comportamento de seleção de item em um Picker pode ser personalizado no iOS com uma plataforma específica. Para obter mais informações, consulte Controlando a seleção de itens do seletor.

O exemplo de código a seguir mostra o método do manipulador de eventos OnPickerSelectedIndexChanged, que é executado quando o evento SelectedIndexChanged é acionado:

void OnPickerSelectedIndexChanged(object sender, EventArgs e)
{
  var picker = (Picker)sender;
  int selectedIndex = picker.SelectedIndex;

  if (selectedIndex != -1)
  {
    monkeyNameLabel.Text = picker.Items[selectedIndex];
  }
}

Esse método obtém o valor da propriedade SelectedIndex e usa o valor para recuperar o item selecionado da coleção Items. Como cada item na coleção Items é um string, eles podem ser exibidos por um Label sem a necessidade de uma conversão.

Observação

Um Picker pode ser inicializado para exibir um item específico definindo a propriedade SelectedIndex. No entanto, a propriedade SelectedIndex deve ser definida após a inicialização da coleção Items.