RelativeSource utilizando FindAncestor

julio 20, 2017 Christian Amado 0 Comentarios


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: