8

FrameworkElementの直接のサブクラスである、にはParentUIElementプロパティがありますが、Panelにはタイプの子がUIElementありますFrameworkElement(Childrenはタイプです)。これは、 sをPanelに直接UIElementCollection追加できることを意味しているようです。UIElement

とは言うUIElementものの、パネルを持っている親がいるかどうかを確認したい場合、これをテストする方法を知る唯一の方法は、を使用することですが、これはVisualTreeHelper論理ツリーではなく視覚ツリーです。(少なくとも、Panelにはテンプレートがないことはわかっているので、おそらくそれが方法ですが、それでも...)

したがって、のVisualTreeHelperほかに、どのパネルがの親であるかを知る方法を知っている人はいUIElementますか?(...そして、なぜ彼らがその代わりに親プロパティを定義しなかったのか考えていますFrameworkElementか?)

ありがとう!

4

1 に答える 1

7

論理的な親を見つける必要がある場合LogicalTreeHelperは、と同じ方法で使用できますVisualTreeHelper

「...そして、なぜ彼らが単に親プロパティを定義しなかったのFrameworkElementか?」については何か考えがあります。基本的に、「論理ツリー」の概念はFrameworkElementレベルで導入されます。に追加される内容の詳細については、 http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx(備考を参照)を参照してください。論理ツリーについては次のようになっています。FrameworkElementUIElement

論理ツリー:一般的なWPFプログラミングモデルは、要素のツリーであるという観点から表現されることがよくあります。要素のツリーを論理ツリーとして表現するためのサポート、およびマークアップでそのツリーを定義するための付随するサポートは、FrameworkElementレベルで実装されます。ただし、FrameworkElementは意図的にコンテンツモデルを定義せず、その責任を派生クラスに任せていることに注意してください。詳細については、「 WPFのツリー」を参照してください。

于 2011-02-15T10:01:41.547 に答える