代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

WPF:数据绑定字典属性

  •  0
  • David Veeneman  · 技术社区  · 14 年前

    我有一个具有Dictionary类型属性的UserControl,名为 HighlightedDates . 该属性包含一组日期,每个日期都有一个工具提示字符串,当从代码设置时,它可以正常工作。

    我想把 高亮度 属性到同一类型的视图模型属性dateswithnotes,使用此标记:

    <MyControls:MyCalendar SelectedDate="{Binding SelectedDate}"
                           HighlightedDates="{Binding DatesWithNotes}" />
    

    不幸的是,当我尝试这样做时,我得到了这个例外:

    无法对类型为“DictionaryEntry”的“Value”属性设置“Binding”。只能在DependencyObject的DependencyProperty上设置“binding”。

    看起来WPF试图绑定一个单独的条目,而不是字典本身。

    另一种选择是,让视图模型将添加到字典中的每个新值推送到用户控件的字典中,这看起来非常笨拙。这就引出了我的问题:有没有一种方法可以使这种约束起作用?谢谢你的帮助。

    3 回复  |  直到 14 年前
        1
  •  2
  •   David Veeneman    14 年前

    这个问题越来越有趣。KarmicPuppet试图用一个简单的测试项目来重现这个错误——见上面他的评论。他在测试中没有得到错误,但我在做同样的测试时得到了。

    我已经读了很多关于数据绑定到字典对象的问题。在我的项目中,我重构以消除字典并继续前进。我没有听到任何其他建议,所以我要结束这个问题。

        2
  •  2
  •   Daan    13 年前

    VS2010 WPF设计器中似乎存在一个错误,即使绑定在运行时工作正常,也可能导致出现此错误消息。

        3
  •  1
  •   Olli Luukas    12 年前

    尽管这已经是一个很古老的问题,但不能在类型为“DictionaryEntry”的“Value”属性上设置错误“a”binding。只能在DependencyObject的DependencyProperty上设置“binding”。只能因为DependencyProperty未设置为而引发。 static .

    这是我偶尔会遇到的问题,只是为了注意到 静止的 缺少关键字。很容易被忽视,尤其是当 readonly 关键字也。