2009-08-06 25 views

答えて

65

添付プロパティは、依存プロパティの一種です。違いは、その使い方です。

添付プロパティでは、プロパティは、使用されているクラスと同じクラスでは定義されていません。これは通常、レイアウトに使用されます。良い例はPanel.ZIndexかGrid.Rowです。これはコントロール(Button:など)に適用しますが、実際にPanelやGridに定義されています。このプロパティは、ボタンのインスタンスに「アタッチ」されています。

これにより、コンテナは、たとえば、すべてのUIelementで使用できるプロパティを作成できます。

実装の違いについては、基本的にプロパティを定義するときにRegister vs. RegisterAttachedを使用するだけです。

+7

しかし、違いは何ですか?私が見たことから、コードを介して別のものにアタッチ不可能なプロパティを付けることができます(これはXAMLではブロックされていると思います)。 – MarqueIV

5

添付プロパティは基本的にコンテナ要素を対象としています。グリッドがあり、グリッドがある場合はこれをグリッド要素の添付プロパティと見なします。このプロパティはtexbox、buttonグリッドにその場所を設定します。

依存プロパティは、基本的に他のクラスに属し、他のクラスで使用されます。 例:矩形のようなもの ここでheightとwidthは四角形の通常のプロパティですが、leftとtopはCanvassクラスに属するので、依存プロパティです。

-2

添付プロパティは、特殊な種類のDependencyPropertiesです。この値について何も知らないオブジェクトに値を付けることができます。 この概念の良い例はレイアウトパネルです。各レイアウトパネルは、その子要素を揃えるために異なるデータを必要とします。 CanvasにはTopとLeft、DockPanelにはDockなどが必要です。独自のレイアウトパネルを書くことができるので、リストは無限です。したがって、すべてのWPFコントロールですべてのプロパティを使用することはできません。 解決策はプロパティに関連付けられています。それらは、特定のコンテキストで別のコントロールからのデータを必要とするコントロールによって定義されます。例えば、親レイアウトパネルによって位置合わせされた要素。

0

あなたはクラス自体に添付プロパティを定義することも、別のクラスで定義することもできます。私たちは常に、標準のMicrosoftコントロールを拡張するために、添付プロパティを使用することができます。しかし、依存関係のプロパティは、独自のカスタムコントロールで定義します。例えば標準コントロールからコントロールを継承し、独自のコントロールで依存関係プロパティを定義して使用することができます。これは、添付プロパティを定義し、標準コントロールでこの添付プロパティを使用するのと同じです。

関連する問題