アプリ開発日記 #24 画面にPickerを実装
今日の目標
実装を進める。
実際にやったこと
新しい画面のビジネスロジック側の処理の作成。
新しい画面の入力項目にPickerを実装。
なお、Xamarin.Formsでは、以下の手順でxamlにPickerで選択する項目をBindすることができます。
- Pickerで選択する項目を定義したクラスを作成する
- ViewModelクラスで上記のクラスのリスト(IList型)を作成する
- Viewのコードビハインドのクラス(xaml.cs)のOnAppearingのタイミングでBindingContextにViewModelをセットする
- xamlでViewModelクラスのリスト(IList型)をバインドする
実際のソース
1.Pickerで選択する項目を定義したクラス
public class PickerItem { public int PickerCode { get; set; } public string PickerName { get; set; } }
2.ViewModelクラスへ作成したリスト(IList型)
public class PickerItemVM { public IList<PickerItem> PickerItems { get; set; } public InputSwotVM() { this.LoadCommand = new Command<int[]>((loadParam) => ExecuteLoadCommand(loadParam)); } private void ExecuteLoadCommand(int[] loadParam) { // Picker選択項目の設定 this.SetSwotCodeItems(loadParam[1]); } private void SetSwotCodeItems(int inputMode) { this.PickerItems = new List<PickerItem>(); var pickerItem= new PickerItem(); pickerItem.SwotCode = 1; pickerItem.SwotName = "強み"; this.SwotCodeItems.Add(stringItem); }}
3.BindingContextにViewModelをセットする
public class PickerItemView { protected override void OnAppearing() { base.OnAppearing(); var loadParam = new int[2]; loadParam[0] = 1; loadParam[1] = 2; this.PickerItemVM.LoadCommand.Execute(loadParam); // ロードコマンド内でPickerの選択肢を作成しているため、ここでBindingContextへVMを設定する BindingContext = this.PickerItemVM; } }
4、バインドする
<Picker x:Name="swotCodePicker" Title="" ItemsSource="{Binding PickerItems }" ItemDisplayBinding="{Binding PickerName }" WidthRequest="150"/>
明日への思い
さらに実装を進めていく。
プログラムをもっときれいに書けるようにするために
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (202件) を見る
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (140件) を見る
C#実践開発手法 デザインパターンとSOLID原則によるアジャイルなコーディング
- 作者: ゲイリーマクリーンホール
- 出版社/メーカー: 日経BP社
- 発売日: 2015/06/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る