WPF C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
static class common
{
    public static T FindControlWithTag(this DependencyObject parent, string tag) where T : UIElement
    {
        List elements = new List();
        int count = VisualTreeHelper.GetChildrenCount(parent);
        if (count > 0)
        {
            for (int i = 0; i < count; i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(parent, i);
                if (typeof(FrameworkElement).IsAssignableFrom(child.GetType())
                    && ((string)((FrameworkElement)child).Tag == tag))
                {
                    return child as T;
                }
                var item = FindControlWithTag(child, tag);
                if (item != null) return item as T;
            }
        }
        return null;
    }
}