我如何使用WPF绑定与RelativeSource?

我如何使用WPF绑定的RelativeSource以及哪些不同的用例?


如果你想绑定到对象的另一个属性:

{Binding Path=PathToProperty, RelativeSource={RelativeSource Self}}

如果你想获得一个祖先的财产:

{Binding Path=PathToProperty,
    RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}

如果你想获得模板父级的属性(所以你可以在ControlTemplate中做2路绑定)

{Binding Path=PathToProperty, RelativeSource={RelativeSource TemplatedParent}}

或更短(这只适用于OneWay绑定):

{TemplateBinding Path=PathToProperty}

Binding RelativeSource={
    RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemType}
}
...

RelativeSource的默认属性是Mode属性。 这里给出了一组完整的有效值(来自MSDN):

  • PreviousData允许您绑定正在显示的数据项目列表中的以前的数据项目(不是包含数据项目的控制项目)。

  • TemplatedParent引用应用模板(其中存在数据绑定元素)的元素。 这与设置TemplateBindingExtension类似,只有在Binding位于模板中时才适用。

  • Self指的是您要在其上设置绑定的元素,并允许您将该元素的一个属性绑定到同一元素上的另一个属性。

  • FindAncestor指数据绑定元素的父链中的祖先。 您可以使用它来绑定到特定类型的祖先或其子类。 如果您要指定AncestorType和/或AncestorLevel,则使用此模式。


  • 以下是MVVM体系结构中更直观的解释:

    在这里输入图像描述

    链接地址: http://www.djcxy.com/p/5883.html

    上一篇: How do I use WPF bindings with RelativeSource?

    下一篇: Native Speech to Text