0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WPFでDataGrid内にEnumのComboboxを置く時のやり方

Posted at

基本的にはhttps://teratail.com/questions/233982 のやり方。個人の備忘録

ポイント

  • DataGridTemplateColumnとDataGridComboBoxColumn
    前者はコンボボックスに限らずカスタマイズ性が高い。
    コンボボックスを作成したときにワンクリックで切り替えができる。
    後者はコンボボックス専用で独特。(未検証)
    コンボボックス作成時に二回クリックしないと切り替えられない。
  • DataGrid.AutoGenerateColumns
    単にObservableCollection表示するだけなら自動で作成されるのでこれをTrueにすると早い
    AutoGenerate字のコールバックを登録できて若干のカスタムはできるがよりいじりたい場合はFalseにする
  • Comboboxの初期を設定するために
    EnumのComboBoxは初期値が設定できないようである。手動で選択して表示させることはできた。
    DataGridのロード時のコールバックで全部のCellのSelectedIndexを設定した
    SelectedIndexは「現在コンボボックスの何番目を選択しているか」が記録されるプロパティ
    SelectedItemには「現在コンボボックスで選択されているVM」が入っていて、SelectedIndexを設定したらこのプロパティにも設定されているのを確認したが、SelectedIndexに値を設定してもそんな値ないといわれた
    • SelectedIndexとかSelectedItemとかSelectedValueとか
      SelectedIndexは上記。SelectedItemはコントロールによくある、選択してるオブジェクトがそのまま入ってくるやつなので、Bindしたりすればいい
    • DataGridのDataTemplateとしてComboBoxを使用すると、ComboBoxにx:Nameで名前付けしてもコードビハインドから参照することはできない
      http://gacken.com/wp/program/wpf/641/ の例のようにVisualTreeから取得するのが良い。公式にもVisualTreeから取得するサンプルはあるがこのサイトのほうが使えた

WPF全般

  • x:Nameでコントロールに名前を付けてコードビハインドから参照する際に、デバッグ中に書き換えてもそんな名前はないといわれる
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?