我们有这样的词典:
var dictionary = new Dictionary<int, int> { { 0, 100 }, { 1, 202 }, { 2, 309 }, };
等很多值。字典绑定到comboBox,如下所示:
comboBox1.ItemsSource = dictionary;
comboBox1.DisplayMemberPath = "Value";
我很想知道如果comboBox.Text仅适用于手动输入的值和此代码,我如何获得此comboBox的选择值:
string value = comboBox1.SelectedValue.ToString();
像[1,202]那样返回值,而我需要清除int TValue“202”。我无法找到类似的问题所以我在那里问它并希望答案可能对其他人有用。
答案 0 :(得分:9)
您似乎必须将SelectedValue
投射到KeyValuePair<int, int>
:
string value = ((KeyValuePair<int, int>)comboBox1.SelectedValue).Value.ToString();
但是,你应该在那里放一个制动点,并检查SelectedValue
到底是什么类型。
我认为它是KeyValuePair<int, int>
,因为您的源集合是Dictionary<int, int>
,因为SelectedValue.ToString()
的输出字符串是[1, 202]
。
答案 1 :(得分:1)
如果指定ValueMember,则可以避免强制转换操作。 重要的是,您必须在数据源之前设置路径,否则它将使用键值为键值对的选定值触发更改后的事件。
comboBox1.DisplayMemberPath = "Value";
comboBox1.SelectedValuePath= "Key";
comboBox1.ItemsSource = dictionary;
string value = comboBox1.SelectedValue.ToString();