【XAMARIN】ピッカーの初期値
ピッカーの初期値を設定したくて悩んだ話
まず、以下のようにピッカーを準備
XAML
<Picker x:Name="picker" ItemDisplayBinding="{Binding Key}"/>
C#
ピッカー用のモデルクラス
using System; namespace SimpleMemo { public class PickerModel { public int Id { get; set; } public string Key { get; set; } } }
ピッカーの中身を設定
// ピッカー用のリスト ObservableCollection<PickerModel> Lists = new ObservableCollection<PickerModel>(); // ピッカーの中身をDBから取得 foreach (var row in db.Table<CategoryTable>().OrderBy(X => X.Id).ToList()) { Lists.Add(new PickerModel { Id = row.Id, Key = row.Key }); } // ピッカーソース設定 this.picker.ItemsSource = this.Lists;
で、画面表示時にピッカーの初期値を設定したくて、悩んだ結果、以下のようにしました。
// ピッカー用のリストから、Id = 2のもののIndexを取得 var idx = this.Lists.Select((item, index) => new { Index = index, Value = item }) .Where(item => item.Value.Id == 2) .Select(item => item.Index); // ピッカーの初期インデックスを設定 this.picker.SelectedIndex = idx.Single();
他に良い方法があれば、教えてください。。