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 に答える