8

我们有这样的字典:

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

等等很多值。像这样绑定到组合框的字典:

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

如果 comboBox.Text 仅适用于手动输入的值和此代码,我想知道如何获得此组合框的 selectedvalue:

string value = comboBox1.SelectedValue.ToString();

返回值如 [1, 202],而我需要清除 int TValue "202"。我找不到类似的问题,所以我在那里问,希望答案对其他人有用。

4

2 回答 2

11

看起来你必须SelectedValue投入KeyValuePair<int, int>

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

但是,您应该在那里设置一个刹车点并检查SelectedValue真正的类型。

我认为这是KeyValuePair<int, int>因为您的源集合是Dictionary<int, int>并且因为输出字符串SelectedValue.ToString()[1, 202].

于 2013-03-22T21:13:15.427 回答
2

如果指定 ValueMember,则可以避免强制转换操作。在数据源之前设置路径很重要,否则它将使用键值对的选定值触发更改的事件。

comboBox1.DisplayMemberPath = "Value";
comboBox1.SelectedValuePath= "Key";
comboBox1.ItemsSource = dictionary;
string value = comboBox1.SelectedValue.ToString();
于 2020-01-23T14:40:46.980 回答