public static void ForEachElement(FrameworkElement treeRoot, ElementHandler elementHandler)
        {
            VisualTreeEnumerator en = new VisualTreeEnumerator(treeRoot);

            while (en.MoveNext())
            {
                FrameworkElement element = en.Current as FrameworkElement;
                if (element != null)
                {
                    elementHandler(element);
                }
            }
        }
        internal static DependencyObject FindElementCore(DependencyObject treeRoot, Predicate <DependencyObject> predicate)
        {
            VisualTreeEnumerator en = new VisualTreeEnumerator(treeRoot);

            while (en.MoveNext())
            {
                DependencyObject element = en.Current;
                if (element != null && predicate(element))
                {
                    return(element);
                }
            }
            return(null);
        }