アプリ開発日記 #24 画面にPickerを実装

今日の目標

実装を進める。

実際にやったこと

新しい画面のビジネスロジック側の処理の作成。
新しい画面の入力項目にPickerを実装。

なお、Xamarin.Formsでは、以下の手順でxamlにPickerで選択する項目をBindすることができます。

  1. Pickerで選択する項目を定義したクラスを作成する
  2. ViewModelクラスで上記のクラスのリスト(IList型)を作成する
  3. Viewのコードビハインドのクラス(xaml.cs)のOnAppearingのタイミングでBindingContextにViewModelをセットする
  4. 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"/>

明日への思い

さらに実装を進めていく。

プログラムをもっときれいに書けるようにするために

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)