ウィンドウ内のすべてのビジュアルを取得するためにヘルパーを使用しましたVisualTree
が、一部の特定のコントロールが返されるリストに表示されないことがあります。これは、私が知る限り、それらがまだレンダリングされていないためです。VisualTree
列挙は、コントロールが既にレンダリングされている場合にのみ役立ちます。
現在、代わりにウィンドウ内のすべての論理オブジェクトをリストする単純な再帰的メソッドを作成しようとしているので、それらがレンダリングされる前にそれらを操作できます。
だから、これが論理ツリーのためにこのようなものを作成する私の最初の試みです:
public static List<DependencyObject> ListLogical( DependencyObject parent )
{
var depList = new List<DependencyObject>();
foreach ( var child in LogicalTreeHelper.GetChildren( parent ).OfType<DependencyObject>() )
{
depList.AddRange( ListLogical( child ) );
}
return depList;
}