94

(カスタム) 依存関係プロパティと WPF の添付プロパティの違いは何ですか? それぞれの用途は?実装は通常どのように異なりますか?

4

5 に答える 5

71

添付プロパティは、依存関係プロパティの一種です。違いは、それらの使用方法にあります。

添付プロパティを使用すると、プロパティは、それが使用されているクラスとは異なるクラスで定義されます。これは通常、レイアウトに使用されます。良い例は、Panel.ZIndex または Grid.Row です。これをコントロール (つまり、ボタン) に適用しますが、実際には Panel または Grid で定義されています。このプロパティは、ボタンのインスタンスに「添付」されています。

これにより、コンテナは、たとえば、任意の UI 要素で使用できるプロパティを作成できます。

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

于 2009-08-06T18:56:17.130 に答える
5

アタッチされたプロパティは、基本的にコンテナ要素を対象としています。たとえば、グリッドがあり、grid.rowがある場合、これはグリッド要素のアタッチされたプロパティと見なされます。また、このプロパティをtexbox、buttonなどで使用して設定できます。グリッドに配置します。

依存関係プロパティは、プロパティが基本的に他のクラスに属し、他のクラスで使用されるようなものです。例:ここに長方形があるように、高さと幅は長方形の通常のプロパティですが、左と上はCanvasクラスに属しているため依存関係のプロパティです。

于 2012-01-10T11:33:57.110 に答える
-1

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

于 2016-07-15T06:03:52.720 に答える