我有一个简单的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>
不起作用?
答案 0 :(得分:2)
两种情况之间的一个区别是char
是值类型,而string
是引用类型。很可能内部WPF使用对象进行绑定,每次收到char
时,都会将其装入新对象,因此引用相等性检查失败。
我会说只需使用string
作为你的钥匙,因为没有办法解决拳击的工作原理。