sing System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using System.Collections.ObjectModel;
using System.Collections.Generic;

namespace MyLib.Extensions {
    
/// <summary>
    
/// Description of WpfExt.
    
/// </summary>
    public static class WpfExt    {
        
public static List<childItem> FindVisualChildren<childItem>(this DependencyObject obj)
            
where childItem : DependencyObject {

            List
<childItem> children = new List<childItem>();

            
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) {
                DependencyObject child 
= VisualTreeHelper.GetChild(obj, i);
                
if (child != null && child is childItem) {
                    children.Add(child 
as childItem);
                } 
else {
                    childItem childOfChild 
= FindVisualChild<childItem>(child);
                    
if (childOfChild != null) {
                        children.Add(childOfChild 
as childItem);
                    }
                }
            }

            
return children;
        }

        
public static childItem FindVisualChild<childItem>(this DependencyObject obj)
            
where childItem : DependencyObject {
            
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) {
                DependencyObject child 
= VisualTreeHelper.GetChild(obj, i);
                
if (child != null && child is childItem)
                    
return (childItem)child;
                
else {
                    childItem childOfChild 
= FindVisualChild<childItem>(child);
                    
if (childOfChild != null)
                        
return childOfChild;
                }
            }
            
return null;
        }

    }
}
posted on 2008-10-20 04:05  XMLSpy  阅读(522)  评论(0编辑  收藏  举报