2013-03-22 1 views
6

У нас есть словарь, как это:Как получить значение SelectedValue в ComboBox, заполненный словарь

var dictionary = new Dictionary<int, int> { { 0, 100 }, { 1, 202 }, { 2, 309 }, }; 

и так далее много значений. словарь переплетен в COMBOBOX так:

comboBox1.ItemsSource = dictionary; 
comboBox1.DisplayMemberPath = "Value"; 

Я удивляюсь, как я могу получить SelectedValue этого COMBOBOX, если comboBox.Text работает только вручную введенные значения и этот код:

string value = comboBox1.SelectedValue.ToString(); 

возвращаемого значение как [1, 202], тогда как мне нужен чистый int TValue «202». Я не могу найти подобный вопрос, поэтому я прошу его и надеюсь, что ответ может быть полезен кому-то другому.

+0

Используйте это как альтернативу обучению созданию «BindingSource» с помощью словаря или словаря 'http://stackoverflow.com/questions/6412739/binding-combobox-using-dictionary-as-the-the- datasource – MethodMan

ответ

8

Похоже, вы должны бросить SelectedValue в KeyValuePair<int, int>:

string value = ((KeyValuePair<int, int>)comboBox1.SelectedValue).Value.ToString(); 

Однако, вы должны поставить brakepoint там и проверить, какой тип SelectedValue на самом деле.

Я предполагаю, что это KeyValuePair<int, int>, потому что ваша коллекция источник Dictionary<int, int> и из строки вывода для SelectedValue.ToString() которая [1, 202].

+0

Блестящий! Отлично работает, спасибо! Я отвечу на ваш ответ как можно скорее. – Mike

+0

спасибо, вот что нужно .... – Armaan

Смежные вопросы