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