2011-02-18 46 views

回答

3

您可以通過VisualTreeHelper搜索通過模板創建的任何元素。
因此,您可以檢查任何現有元素的TabIndex,並會找到您想要的元素(它的tab-index非常獨特:)。您也可以在DataTemplate中命名您的元素併爲名稱命名爲過濾器。

以下函數允許您查找給定類型的可視化樹的所有元素。

void FindChildFrameworkElementsOfType<T>(DependencyObject parent,IList<T> list) where T: FrameworkElement{    
    DependencyObject child; 
    for(int i=0;i< VisualTreeHelper.GetChildrenCount(parent);i++){    
     child = VisualTreeHelper.GetChild(parent, i); 
     if (child is T) { 
      list.Add((T)child); 
     } 
     FindChildFrameworkElementsOfType<T>(child,list); 
    } 
} 

稱之爲如下:

List<TextBox> textBoxList=new List<TextBox>(); 
FindChildFrameworkElementsOfType<TextBox>(rootObject,textBoxList); 

rootObject是根對象,如你的窗口或底座控制。你會得到一個所有文本框的列表,這個列表可以檢查tab-index或者你想要檢查的任何屬性。
請注意,在調用此函數之前必須構建樹。在某些情況下,上述模式不起作用,例如,通過列表中的UI虛擬化。

+0

是的!這就是我需要的!多麼寶貴的功能!謝謝! –

相關問題