次の方法で共有


ピッカーの項目コレクションへのデータの追加

ピッカー ビューは、データの一覧からテキスト項目を選択するためのコントロールです。 この記事では、Items コレクションに追加してピッカーにデータを設定する方法と、ユーザーによる項目の選択に応答する方法について説明します。

ピッカーにデータを設定する

Xamarin.Forms 2.3.4 より前は、Picker にデータを設定するプロセスは、型 IList<string> の読み取り専用の Items コレクションに表示されるデータを追加することでした。 コレクション内の各項目は 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 は、一度に 1 つの項目の選択をサポートします。 ユーザーが項目を選択すると、SelectedIndexChanged イベントが発生し、SelectedIndex プロパティはリスト内の選択した項目のインデックスを表す整数に更新されます。 SelectedIndex プロパティは、ユーザーが選択した項目を示す 0 から始まる番号です。 項目が選択されていない場合 (最初に Picker が作成および初期化されたとき)、SelectedIndex は -1 になります。

Note

Picker での項目選択動作は、iOSではプラットフォームごとにカスタマイズできます。 詳細については、ピッカー項目の選択の制御に関する記事を参照してください。

次のコード例は、SelectedIndexChanged イベントが発生したときに実行される OnPickerSelectedIndexChanged イベント ハンドラー メソッドを示しています。

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 で表示できます。

Note

SelectedIndex プロパティを設定することで、特定の項目を表示するように Picker を初期化できます。 ただし、Items コレクションの初期化後に SelectedIndex プロパティを設定する必要があります。