示例#1
0
 /// <summary>
 /// Returns a collection of child elements.
 /// </summary>
 public static IEnumerable<DependencyObject> Elements(this DependencyObject item)
 {
   ILinqTree<DependencyObject> adapter = new VisualTreeAdapter(item);
   foreach (var child in adapter.Children())
   {
     yield return child;
   }
 }
示例#2
0
    /// <summary>
    /// Returns a collection of ancestor elements.
    /// </summary>
    public static IEnumerable<DependencyObject> Ancestors(this DependencyObject item)
    {
      ILinqTree<DependencyObject> adapter = new VisualTreeAdapter(item);

      var parent = adapter.Parent;
      while (parent != null)
      {
        yield return parent;
        adapter = new VisualTreeAdapter(parent);
        parent = adapter.Parent;
      }
    }
        /// <summary>
        /// Returns a collection of descendant elements.
        /// </summary>
        public static IEnumerable <DependencyObject> Descendants(this DependencyObject item)
        {
            ILinqTree <DependencyObject> adapter = new VisualTreeAdapter(item);

            foreach (var child in adapter.Children())
            {
                yield return(child);

                foreach (var grandChild in child.Descendants())
                {
                    yield return(grandChild);
                }
            }
        }