【发布时间】:2010-08-30 21:39:10
【问题描述】:
我有一个带有字典类型属性的 UserControl,称为HighlightedDates。该属性包含一组日期,每个日期都有一个工具提示字符串,并且从代码设置时可以正常工作。
我想使用此标记将HighlightedDates 属性绑定到相同类型的视图模型属性 DatesWithNotes:
<MyControls:MyCalendar SelectedDate="{Binding SelectedDate}"
HighlightedDates="{Binding DatesWithNotes}" />
不幸的是,当我尝试这样做时遇到了这个异常:
不能在“DictionaryEntry”类型的“Value”属性上设置“Binding”。 “绑定”只能在 DependencyObject 的 DependencyProperty 上设置。
看起来 WPF 正在尝试绑定单个条目,而不是字典本身。
作为替代方案,我正在考虑让视图模型将添加到其字典中的每个新值推送到用户控件的字典中,这看起来非常笨拙。这让我想到了我的问题:有没有办法使这种绑定起作用?谢谢你的帮助。
【问题讨论】:
-
我尝试复制这个(特别是字典部分),它似乎工作正常。基本上,我创建了一个带有 Dictionary
依赖属性的 UserControl,然后我创建了一个具有相同字典属性的 ViewModel。最后,我在一个 Window 中使用了 UserControl,将其 DataContext 设置为 ViewModel,并将 UserControl.Dictionary 属性绑定到 ViewModel.Dictionary 属性。它工作正常,我没有收到错误。所以我认为这个错误是由其他东西引发的。也许您可以向我们展示 UserControl 的定义? -
谢谢——我复制了你的测试,但我仍然得到同样的错误。我已经复制了下面的标记和代码。所以很明显,我做错了什么......