ピッカーの項目コレクションへのデータの追加
ピッカー ビューは、データの一覧からテキスト項目を選択するためのコントロールです。 この記事では、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
プロパティを設定する必要があります。