DependencyProperty
違いは、クラスの外部からにアクセスできないことです。これは、静的なGetメソッドとSetメソッドもプライベート である場合(たとえば、いくつかの動作のローカルデータを格納する必要がある添付の動作で)は意味がありますが、そうでない場合は意味がありません(そして私はこれを見たことがないと思いますpublic Get and Set)。
を使用する場合の例はDependencyProperty
ですDependencyPropertyDescriptor
。パブリックDependencyProperty
を使用すると、次のことができます
DependencyPropertyDescriptor de =
DependencyPropertyDescriptor.FromProperty(Click.CommandProperty, typeof(Button));
de.AddValueChanged(button1, delegate(object sender, EventArgs e)
{
// Some logic..
});
ただし、DependencyProperty
がプライベートの場合、上記のコードは機能しません。
ただし、所有者クラスはプライベートにアクセスできるため、以下はパブリックとプライベートの両方で正常に機能しDependencyProperty
ます(静的なGetメソッドとSetメソッドがパブリックの場合)DependencyProperty
。これは、Xamlを介して設定されたバインディングと値にも当てはまります。ここでGetValue
とSetValue
は直接呼び出されます。
Click.SetCommand(button, ApplicationCommands.Close);
ICommand command = Click.GetCommand(button);
フレームワークを見ると、パブリックにアタッチされたすべてのプロパティにパブリックがあります。DependencyProperty
たとえばGrid.RowProperty
、とStoryboard.TargetNameProperty
。したがって、添付プロパティがパブリックである場合は、パブリックを使用してくださいDependencyProperty