我有一个UserControl,其属性类型为Dictionary,名为HighlightedDates
。该属性包含一组日期,每个日期都有一个工具提示字符串,从代码设置时它可以正常工作。
我想使用此标记将HighlightedDates
属性绑定到相同类型的视图模型属性DatesWithNotes:
<MyControls:MyCalendar SelectedDate="{Binding SelectedDate}"
HighlightedDates="{Binding DatesWithNotes}" />
不幸的是,当我尝试这样做时,我得到了这个例外:
无法在“DictionaryEntry”类型的“Value”属性上设置“绑定”。 '绑定'只能在DependencyObject的DependencyProperty上设置。
看起来WPF正在尝试绑定单个条目,而不是字典本身。
作为替代方案,我正在考虑让视图模型将添加到其字典中的每个新值推送到用户控件的字典,这看起来非常笨拙。这让我想到了一个问题:有没有办法让这个绑定工作?谢谢你的帮助。
答案 0 :(得分:2)
这个问题变得更有趣了。 Karmicpuppet试图使用一个简单的测试项目重现错误 - 请参阅上面的评论。他没有在测试中得到错误,但是当我进行同样的测试时我得到了它。
我已经阅读了很多关于数据绑定到字典对象的问题。在我的项目中,我重构了消除字典并继续前进。我没有听到任何其他建议,所以我将结束这个问题。
答案 1 :(得分:2)
VS2010 WPF设计器中似乎存在一个错误,可能会导致出现此错误消息,即使绑定在运行时工作正常也是如此。
答案 2 :(得分:1)
即使这已经是一个很老的问题,也不能在'DictionaryEntry'类型的'Value'属性上设置错误“A'Binding'。'Binding'只能在DependencyObject的DependencyProperty上设置。”可能因为DependencyProperty未设置为static
而被抛出。
这是我偶尔与之斗争的事情,只是为了注意到static
关键字缺失。它很容易被忽视,特别是当readonly
关键字也被忽略时。