1

我读过 SL4 引入了对派生自 DependencyObjects 的对象的属性进行数据绑定的能力,而以前的数据绑定仅适用于 FrameworkElements 或 FrameworkContentElements。

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

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

对于 DependencyObjects,我猜想使用的 DataContext 是 XAML 文件中“包含”FrameworkElement 的 DataContext。但是确定这个包含对象的机制是什么?

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

4

1 回答 1

1

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

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

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

于 2010-07-06T03:27:44.547 回答