DependencyObject的绑定上下文

时间:2012-06-20 13:32:42

标签: silverlight binding dependency-properties dependencyobject

我正在尝试理解Silverlight依赖属性系统的低级细节。

我意识到DependencyObject没有显式的DataContext属性,甚至没有父级的概念。

然而,派生类派生自DependencyObject,绑定使用它附加的DataContext作为绑定源自身。

我的问题是:我可以从DependencyObject派生一个类,并以某种方式确定在Source中使用哪个其他对象进行绑定?或者更清楚:如何实现类似行为的东西?

1 个答案:

答案 0 :(得分:2)

  

DataContext是一个FrameworkElement属性。通过使用一种形式   父子属性继承,绑定系统可以解析一个   存在于父元素上的DataContext,即使是子对象   (具有target属性)不是FrameworkElement和   因此不保存自己的DataContext值。但是,那   父元素必须是FrameworkElement才能设置和保存   DataContext的。或者,您必须定义绑定   可以使用null DataContext。

  

从Silverlight 4开始,目标也可以是   在以下情况下DependencyObject的DependencyProperty:

     
      
  • DependencyObject是FrameworkElement属性的值。

  •   
  • DependencyObject位于一个集合中,该集合是a的值   FrameworkElement属性(例如,Resources属性)。

  •   
  • DependencyObject位于DependencyObjectCollection中。

  •   
     

从Silverlight 5开始,目标也可以是Value属性   风格中的二传手。有关示例,请参阅Style类   概述

所以问题的答案是:是的,您可以从DependencyObject派生您的类,只要满足上面列出的条件或绑定不依赖于DataContext(使用的ElementName或Source属性),它的依赖属性上的绑定就会起作用