C#のWPFでComboBoxにDictionaryをバインドする

C#の Dictionary クラスでは、連想配列というものを扱う事が出来ます。

連想配列はインデックス番号の代わりに Key と呼ばれるオブジェクトに Value と呼ばれる値を関連付けて管理する事が出来る配列です。

 

WPF の ComboBox へ表示するソースとして、この Dictionary クラスのデータを使う為の方法を解説してみます。

ComboBoxにバインドする

ComboBoxは表示する項目と内部的に管理する値とを持つことが出来ます。

 

ここでは、内部的な値に Dictionary の Key を使用し、表示する項目に Dictionary の Value が使われるように設定を行なっていきます。

XAML

     <ComboBox ItemsSource="{Binding CountryDic}"
              SelectedValuePath="Key"
              DisplayMemberPath="Value"/>

ItemsSourceDictionaryクラスのオブジェクト "CountryDic" をセットしています。

SelectedValuePath に "Key" と指定する事で Dictionary の Key 項目が参照されます。

DisplayMenberPath に "Value" と指定する事で Dictionary の Value 項目が表示項目となります。

コード

    public partial class MainWindow : Window
    {
        public Dictionary<string, string> CountryDic { get; set; }

        public MainWindow()
        {
            CountryDic = new Dictionary<string, string>()
            {
                { "CA", "カナダ" },
                { "DE", "ドイツ" },
                { "FR", "フランス" },
                { "GB", "イギリス" },
                { "IT", "イタリア" },
                { "JP", "日本" },
                { "US", "アメリカ合衆国" },
            };

            InitializeComponent();
            DataContext = this;
        }
    }

 

 

コンボボックスには Dictionary の Value の内容が表示され、ComboBox.SelectedValue では Key の値が取得出来ます。