¿Cómo uso enlaces WPF con RelativeSource?
¿Cómo lo uso RelativeSource
con enlaces WPF y cuáles son los diferentes casos de uso?
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}
Binding RelativeSource={
RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemType}
}
...
El atributo predeterminado de RelativeSource
es la Mode
propiedad. 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.