2011-02-18 18 views

答えて

3

VisualTreeHelperテンプレートを使用して作成された要素を検索することができます。
したがって、既存の要素のTabIndexを確認して、目的の要素を見つけることができます(タブインデックスは本当にユニークです)。また、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); 
    } 
} 

コール、それを次のように:rootObjectは、あなたの窓やベースコントロールとしてルートオブジェクトである

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

。すべてのテキストボックスの一覧が表示されます。このリストには、タブインデックスなど、チェックするプロパティをチェックできます。
この関数を呼び出す前にツリーを構築する必要があることに注意してください。上記のパターンがうまくいかない状況がいくつかあります。 UI仮想化をリストに追加しました。

+0

それは私が必要なものです!どのような貴重な機能!ありがとうございました! –

関連する問題