RelativeSource utilizando FindAncestor
RelativeSource
Es una clase que implementa una extensión de marcado la cual describe la ubicación del origen del enlace con respecto a la posición de destino del enlace.
FindAncestor
Busca elementos antecesores dentro del árbol visual establecido en RelativeSource.
Ejemplos prácticos
Si necesitas enlazarlo con otra propiedad en el objeto:
{Binding Path=PROPIEDAD_A_UTILIZAR, RelativeSource={RelativeSource Self}}
Ejemplo:
<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
Si necesitas obtener una propiedad del antecesor:
{Binding Path=PROPIEDAD_A_UTILIZAR, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TIPO_DE_DATO_DEL_ANTECESOR}}}
Ejemplo:
<TextBlock Margin="10" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}, AncestorLevel=1},Path=Name}" />
Si necesitas obtener la propiedad de una plantilla padre (aquí se muestra como utilizarlo con RelativeSource):
{Binding Path=PROPIEDAD_A_UTILIZAR, RelativeSource={RelativeSource TemplatedParent}}
Ejemplo:
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, StringFormat=0}"/>
De esta manera hemos visto cómo trabajar con RelativeSource.
0 comentarios: