【问题标题】:Unable to set initial value when databinding combobox to Dictionary<char,string>数据绑定组合框到 Dictionary<char,string> 时无法设置初始值
【发布时间】:2010-11-30 04:53:02
【问题描述】:

我有一个定义为 ResultOptions = new Dictionary&lt;char, string&gt; 的简单字典,并且我的视图模型有一个 char 类型的公共属性 ResultCode。我的 XAML 如下:

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

除了 ComboBox 从未基于 SelectedValue 的值进行初始化之外,一切都运行良好。我确定绑定是正确的,因为我可以看到视图模型中的 ResultCode 设置正确。

奇怪的是...如果我将模型更改为 ResultCode 的类型为“字符串”并且我的字典是 Dictionary&lt;string,string&gt;,那么组合框会根据 SelectedValue 正确初始化。

我错过了什么?为什么绑定到Dictionary&lt;string, string&gt; 有效,但绑定到Dictionary&lt;char, string&gt; 无效?

【问题讨论】:

    标签: wpf data-binding dictionary combobox


    【解决方案1】:

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

    我会说只需使用 string 作为您的密钥,因为没有任何方法可以绕过拳击的工作原理。

    【讨论】:

    • 谢谢!我们确实决定暂时使用字符串作为键。
    • 如果该答案回答了您的问题,您应该将其标记为已接受,这样该问题就不会再显示为没有已接受的答案。
    猜你喜欢
    • 2011-03-16
    • 2013-10-13
    • 2011-10-14
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多