¿Cómo uso enlaces WPF con RelativeSource?

Resuelto David Schmitt asked hace 16 años • 14 respuestas

¿Cómo lo uso RelativeSourcecon enlaces WPF y cuáles son los diferentes casos de uso?

David Schmitt avatar Sep 17 '08 22:09 David Schmitt
Aceptado

Si desea vincularse a otra propiedad del objeto:

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

Si desea obtener una propiedad sobre un antepasado:

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

Si desea obtener una propiedad en la plantilla principal (para que pueda realizar enlaces bidireccionales en un ControlTemplate)

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

o, más corto (esto solo funciona para enlaces OneWay):

{TemplateBinding Path=PathToProperty}
Abe Heidebrecht avatar Sep 17 '2008 15:09 Abe Heidebrecht
Binding RelativeSource={
    RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemType}
}
...

El atributo predeterminado de RelativeSourcees la Modepropiedad. Aquí se proporciona un conjunto completo de valores válidos ( de MSDN ):

  • PreviousData Le permite vincular el elemento de datos anterior (no el control que contiene el elemento de datos) en la lista de elementos de datos que se muestran.

  • TemplatedParent Se refiere al elemento al que se aplica la plantilla (en el que existe el elemento vinculado a datos). Esto es similar a configurar TemplateBindingExtension y solo se aplica si el enlace está dentro de una plantilla.

  • Self Se refiere al elemento en el que está configurando el enlace y le permite vincular una propiedad de ese elemento a otra propiedad en el mismo elemento.

  • FindAncestor Se refiere al antepasado en la cadena principal del elemento vinculado a datos. Puede utilizar esto para vincularse a un ancestro de un tipo específico o sus subclases. Este es el modo que utiliza si desea especificar AncestorType y/o AncestorLevel.

Drew Noakes avatar Mar 03 '2009 09:03 Drew Noakes