【WPF】データグリッドにコンボボックスを表示する

C#, 開発

おはようございます。

今回はデータグリッドにコンボボックスを表示したいと思います。

チェックボックスと同様、デフォルトで「DataGridComboBoxColumn」がありますが、
同じ理由(2回クリックしないと変更できない)で「DetaGridTemplateColumn」を利用したいと思います。

プログラムは次の記事のものを流用します。

※ただし、DBはSQLiteに変更してます

スタイルの修正

StyleDic.xaml

データグリッドを編集可能(行追加不可)にし、データグリッド内のコンボボックス用定義を追加。

スポンサーリンク

画面の修正

MainWindow.xaml

「性別」列を「DataGridTemplateColumn」に変更し、コンボボックスを設置。

ポイントは次のプロパティ

  • ItemsSource
    コンボボックスの表示内容となるリスト
    コードビハインドにて、DataContextに設定したリストを指定
  • DisplayMemberPath
    バインドされたクラスの表示するメンバーを指定
  • SelectedValuePath
    バインドされたクラスの値となるメンバーを指定
  • SelectedValue
    データグリッドにバインドされたリストのメンバーを指定
    この項目が紐付きとなる

プログラムの修正

新規クラス追加

コンボボックスに設定するためのクラスを作成

Gender.cs

コードビハインドの修正

下記をグローバルスコープで定義

MainWindow.xaml.cs(抜粋)

起動時にデータグリッド内のコンボボックス用リストを作成して設定

MainWindow.xaml.cs(抜粋)

 

起動してみる

起動後画面
起動後画面

 

 

 

 

 

 

 

 

起動直後、「性別」がコンボボックスになってますね。

コンボボックス選択
コンボボックス選択

 

 

 

 

 

 

 

 

クリックすると、コンボボックスが展開されて変更することができます。

まとめ

データグリッドにコンボボックスを表示する方法は色々ありますが、
とりあえずこんな感じで落ち着きました。

今後他のコントロールも試していきたいと思います。

ではでは。

スポンサーリンク


関連するコンテンツ