{Binding ElementName=foo}
を持つと、ビジュアルツリーまたは論理ツリーが検索されますか?論理ツリー状物質を行いバインディングElementName。ビジュアルツリーまたは論理ツリーを使用しています
Of logical and visual trees in WPF | Data See, Data Do
?
よう{バインディングのElementName =フー}のように、名前を検索する場合、検索 それは 継承プロパティの場合と同じように、再び、 名前スコープを探し祖先を歩きます。
ElementName binding in Silverlight via Attached Behaviours
にバインドするために、あなたのビジュアルツリー内の他の要素を 見つけるためにあなたに強力な メカニズムを与え、 のElementNameおよびRelativeSource バインディングを提供しますこれを可能にするために、WPFは
編集:
バインドに使用される論理ツリーのように見えます(ElementName
)。 MSDNの記事FrameworkElement Classによる
引数#1
:
のFrameworkElementは、UIElementの を拡張し、次の機能が追加されます:データバインディングと 動的リソース参照の
- サポート:バインディングとリソースの データに対する のプロパティレベルのサポート によって実装されたDependencyPropertyクラスによって とプロパティシステムにおいて具現 が、 式(結合 両方のデータと動的 リソースの下 プログラミングコンストラクト)として記憶されるメンバ値を 解決する能力を実現FrameworkElement。 の詳細については、データバインディングの概要 およびリソースの概要を参照してください。
引数#2
ElementName
x:Name
のポイントなので、この名前にはいくつかの方法が見つかるはずです。 NameScopeのコンセプトがあります。ほとんどのシナリオで
、 Visual classどちらも、FrameworkElementの とFrameworkContentElementの上に露出しFindName指定 方法は、名前で要素のため を検索するために呼び出すために、より 適切な方法です。名前 FrameworkElement およびFrameworkContentElementによって公開されるプロパティは、 のマークアップ属性として、 を設定するために使用する適切なプロパティです。 そしてRegisterNameメソッドはFrameworkElementの上 を露出し、 FrameworkContentElementのは、特定の 名前スコープに名前を確立する を必要である(直接これを行うことができます何のNameScopeの メンバーはありません。あなたが RegisterNameを使用することを第一の電流名前スコープ を設定する必要があります) 。一方
FindName
メソッドを持っていない、また
INameScopeを実装します。
論理ツリーが使用されます。後者は詳細を投稿します。 – alex2k8