3

アタッチされたプロパティタイプにあるプロパティ変更コールバックからアタッチされたプロパティのインスタンスを取得する方法はありますか?

言い換えれば、あなたが持っている場合:

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のインスタンスにアクセスする必要があります。

4

1 に答える 1

2

通常、少なくとも私の経験では、アタッチされたプロパティが所有するタイプは静的です。静的でない場合、添付プロパティの設定に関しては、所有タイプのインスタンスはインスタンス化されません。それが本当に必要な場合は、もう少し作業を行う必要があります。

OnMyPropertyChanged基本的に、ある時点でインスタンスを自分でインスタンス化してから、おそらく何らかの静的状態を介してインスタンスにアクセスできるようにする必要があります。

何を達成しようとしているのか正確にはわかりませんが、代わりに、のDependencyObjectd」に他のアタッチされたプロパティを設定することもできますOnMyPropertyChanged。ですから、あなたが維持したいある種の状態があるなら、あなたはそれを別の付属の財産に置くことができます。

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

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

于 2010-12-16T14:19:23.160 に答える