[WPF/UWP]列挙型をComboBoxにバインドするには?

列挙型をComboBoxにバインドするときの考え方ドロップダウンリストには列挙型の一覧を表示したいので、右上に示した(Enum値をKey、表示文字列をValueとする)DictionaryコレクションをItemsSourceプロパティにバインドする。ドロップダウンリストに表示したいのはDictionaryコレクションのValueの方なので、DisplayMemberPathプロパティには"Value"と指定する。エンドユーザーがドロップダウンリストで選択操作をすると、Dictionaryコレクションの要素が1つ選択される。そのKeyプロパティの方をデータクラスにバインドしたいので、SelectedValuePathプロパティに"Key"と指定する。これで、エンドユーザーが選択した項目の列挙値がSelectedValueプロパティに設定されるようになる。左上のデータクラス(=バインディングソース)の列挙型プロパティをSelectedValueプロパティに双方向でバインドすれば、エンドユーザーの選択がデータクラスに反映されるようになる(後述するがUWPではここのバインドに工夫が必要だ)。

列挙型をComboBoxにバインドするときの考え方ドロップダウンリストには列挙型の一覧を表示したいので、右上に示した(Enum値をKey、表示文字列をValueとする)DictionaryコレクションをItemsSourceプロパティにバインドする。ドロップダウンリストに表示したいのはDictionaryコレクションのValueの方なので、DisplayMemberPathプロパティには"Value"と指定する。エンドユーザーがドロップダウンリストで選択操作をすると、Dictionaryコレクションの要素が1つ選択される。そのKeyプロパティの方をデータクラスにバインドしたいので、SelectedValuePathプロパティに"Key"と指定する。これで、エンドユーザーが選択した項目の列挙値がSelectedValueプロパティに設定されるようになる。左上のデータクラス(=バインディングソース)の列挙型プロパティをSelectedValueプロパティに双方向でバインドすれば、エンドユーザーの選択がデータクラスに反映されるようになる(後述するがUWPではここのバインドに工夫が必要だ)。