Silverlight4中DependencyObject的DataContext是什么?

时间:2010-07-05 15:22:40

标签: silverlight data-binding silverlight-4.0 dependencyobject

我已经读过SL4引入了从DependencyObjects派生的对象的数据绑定属性的功能,其中以前的数据绑定仅适用于FrameworkElements或FrameworkContentElements。

但是,我不清楚在绑定DependencyObjects的属性时如何确定绑定源。

对于FrameworkElements,元素的DataContext属性是源对象(如果未直接设置DataContext,则“向上走树”以查找DataContext。)

在DependencyObjects的情况下,我猜想使用的DataContext是XAML文件中'包含'FrameworkElement的DataContext。但是确定这个包含对象的机制是什么?

在我的特定情况下,我试图绑定生活在ObservableCollection中的DependencyObject的属性,该ObservableCollection是FrameworkElement的属性。不幸的是,尝试在DependencyObject上绑定属性失败,因为数据绑定系统似乎使用DependencyObject本身作为它自己的DataContext。它抱怨(在输出窗口中)该类型没有具有绑定表达式中指定的名称的属性。将同一UserControl中的FrameworkElement的依赖项属性绑定到相同的绑定表达式是成功的。

1 个答案:

答案 0 :(得分:1)

在定义绑定时,您是否尝试过说明Source或ElementName属性?

(例如:{Binding Source={StaticResource theFrameworkElement} Path=theObservableCollection[0]}

{Binding ElementName=theFrameworkElement Path=theObservableCollection[0]}