2010-12-16 8 views
2

添付プロパティー・タイプにあるプロパティー・チェンジ・コールバックから、接続プロパティーのインスタンスを取得していますか?言い換えれば依存プロパティーの変更コールバックからの接続プロパティー・インスタンスの取得

、あなたが持っている場合:

public class MyAttachedPropertyClass 
{ 
     public static readonly DependencyProperty MyProperty = DependencyProperty.RegisterAttached(
     "My", typeof(int), typeof(MyAttachedPropertyClass), new FrameworkPropertyMetadata(0, OnMyPropertyChanged)); 

private static void OnMyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     //TODO: access instance of MyAttachedPropertyClass 
    } 
} 

を私はタイプの上に座って、他のプロパティの値を設定することができるようにMyAttachedPropertyClassのインスタンスにアクセスする必要があります。

+0

あなたがしたいことを理解しているかわかりません。もう少し詳しく説明できますか? –

+0

私はMyAttachedPropertyClassにインスタンスベースのフィールドを持っているので、OnMyPropertyChangedのそのフィールドの値を整数であるe.NewValueの値に設定する必要があります。 OnMyPropertyChangedは静的なので、静的コンテキストでこのインスタンスフィールドにアクセスすることはできません。 – devdigital

+1

私はあなたの質問やあなたがしたいことを理解しているかどうかはわかりませんが、プロパティの変更が起こっているオブジェクトインスタンスが必要な場合(これまでのところ私の最高の推測)依存オブジェクトd 'パラメータ。 –

答えて

2

通常、少なくとも私の経験では、接続プロパティが所有するタイプは静的です。静的でないときは、添付プロパティの設定に関しては、所有する型のインスタンスはインスタンス化されません。それが本当に欲しいものなら、もう少し作業をしなければならないでしょう。

本質的には、ある時点でインスタンスをインスタンス化し、おそらく何らかの静的状態を通じてOnMyPropertyChangedでアクセス可能にする必要があります。

達成しようとしていることを正確にはわかりませんが、別の方法として、DependencyObjectdの添付プロパティをOnMyPropertyChangedに設定することができます。だから、あなたが周りにいたいと思うような状態があれば、それを別の属性に入れることができます。

この時点で、MyAttachedPropertyClassは、GridまたはDockPanelのような付加プロパティを使用する種類のコントロールである可能性があります。その場合、MyAttachedPropertyClassDependencyObjectの親であり、dとなり、VisualTreeHelperクラスを使用してアクセスできます。

この時点で、私は暗闇の中で答えを出して撮影しています。あなたが何をしようとしているかについてさらに詳しいことがあれば、私はあなたをさらに助けることができるかもしれません。

関連する問題