Binding.RelativeSource 属性说明:
通过指定绑定源相对于绑定目标的位置,获取或设置绑定源。
此属性通常用于将对象的某个属性绑定到该对象的另一个属性,或用于在样式或模板中定义绑定。
默认情况下,如果已设置了 DataContext 属性,则绑定会继承该属性所指定的数据上下文。但是,RelativeSource 属性是一种可以显式设置 Binding 的源和重写继承的数据上下文的方式。有关更多信息,请参见如何:指定绑定源。
此外,使用 Binding.ElementName 和 Binding.Source 属性还可以显式设置绑定源。但是,对于每个绑定,只能设置 ElementName、Source 和 RelativeSource 这三个属性中的一个,否则可能发生冲突。如果存在绑定源冲突,则此属性将引发异常。
RelativeSource的两个重要属性:
AncestorLevel属性指的是以Binding目标控件为起点的层级偏移量,AncestorType属性告诉Binding寻找哪个类型的对象作为自己的源,不是这个类型的对象会被跳过。如:下面的XAML示例代码:
<TextBox Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type Grid}}, Path=Name}" />