私は現在、すべてのケースで機能したい次のコード行を持っています:
var visualWindowContent = (UIElement)window.Content;
このアプローチは、Window.Content が UIElement の場合に機能します。しかし、DataTemplate が適用された非ビジュアル オブジェクトの場合はどうでしょうか。上記のコード行は、不正なキャスト例外をスローします。その場合、ウィンドウのビジュアル コンテンツを取得するにはどうすればよいでしょうか。
編集:最初に VisualTreeHelper.GetChild(window, 0) が null を返したと言いましたが、実際には null ではありませんでした。ここでの目的は、visualWindowContent を AdornerLayer.GetAdornerLayer に渡すことによって、ルート アドナー レイヤーを取得することです。ウィンドウの直接のビジュアル子を渡すと、そのノードがビジュアル ツリー内で十分に深くないため (つまり、AdornerDectorator の子孫)、失敗 (null を返す) であることが判明しました。