Christian Amado

Christian Amado

Ingeniero de software, desarrollador
Diseñado adaptado de Todd Motto

WPF: Buscar Antecesor en el árbol visual
Jul 21, 2017
lectura de 1 min
Editar entrada

Si buscamos algún elemento dentro de un objeto en la interfaz de usuario y necesitamos acceder a sus datos desde el elemento padre, pero no tenemos idea de cuántos niveles de elementos posee éste, la mejor solución es navegar a través del árbol visual hasta encontrar un elemento del tipo de dato que necesitamos.

Para eso necesitamos de una extensión de clase que permite navegar a través del árbol visual. He aquí el código:

public static class VisualTreeHelperExtensions
{
    public static T FindAncestor<T>(DependencyObject dependencyObject)
        where T : class
    {
        DependencyObject target = dependencyObject;
        do
        {
            target = VisualTreeHelper.GetParent(target);
        }
        while (target != null && !(target is T));
        return target as T;
    }
}

Cuando necesitamos obtener el elemento en cuestión simplemente utilizamos la siguiente línea:

//StackPanel es el elemento padre donde buscaremos el control y this representa al objeto actual (el hijo).
var objeto = VisualTreeHelperExtensions.FindAncestor<StackPanel>(this);

Con este sencillo código podemos navegar a través de todos los elementos dentro de un determinado objeto.

Jul 20, 2017

WPF: RelativeSource utilizando FindAncestor

RelativeSource Es una clase que implementa una extensión de marcado la cual describe la ubicación...

Jul 24, 2017

Xamarin: Consumo de servicio REST

En estos días, escuchamos por todos lados hablar de consumir servicios REST, el cual, se...