对于FrameworkElements,元素的DataContext属性是源对象(如果DataContext不是直接设置的,则在树上查找DataContext)。
对于DependencyObjects,我猜使用的DataContext是XAML文件中“containing”FrameworkElement的DataContext。但是确定这个包含对象的机制是什么呢?
在我的特殊情况下,我试图绑定一个DependencyObject的属性,该对象位于一个observeCollection中,它是FrameworkElement的属性。不幸的是,尝试绑定DependencyObject上的属性失败,因为数据绑定系统似乎将DependencyObject本身用作自己的DataContext。它抱怨(在输出窗口中)类型没有绑定表达式中指定名称的属性。使用相同的绑定表达式将同一UserControl中FrameworkElement的依赖项属性绑定成功。