将组合框数据绑定到Dictionary <char,string> </char,string>时无法设置初始值

时间:2009-09-21 20:04:12

标签: wpf data-binding dictionary combobox

我有一个简单的Dictionary定义为ResultOptions = new Dictionary<char, string>,我的viewmodel有一个char类型的公共属性ResultCode。我的XAML如下:

<ComboBox ItemsSource="{Binding ResultOptions}"
                            DisplayMemberPath="Value"
                            SelectedValuePath="Key"
                            SelectedValue="{Binding ResultCode}" /> 

除了ComboBox永远不会根据SelectedValue的值进行初始化之外,一切都运行良好。我确定绑定是正确的,因为我能够看到viewmodel中的ResultCode设置正确。

奇怪的是......如果我改变我的模型让ResultCode为'string'类型而我的字典是Dictionary<string,string>,那么组合框将根据SelectedValue正确初始化。

我错过了什么?为什么绑定到Dictionary<string, string>有效,但绑定到Dictionary<char, string>不起作用?

1 个答案:

答案 0 :(得分:2)

两种情况之间的一个区别是char是值类型,而string是引用类型。很可能内部WPF使用对象进行绑定,每次收到char时,都会将其装入新对象,因此引用相等性检查失败。

我会说只需使用string作为你的钥匙,因为没有办法解决拳击的工作原理。