1

特定の継承されたアタッチされたプロパティを使用するコントロールがありますが、コンストラクターでそのプロパティにアクセスできないことがわかりました。これは、その段階ではコントロールがビジュアルツリーの一部ではないため、次のことができるためです。アタッチされたプロパティを継承しません。

// Constructor
public MyClassName()
{
    InitializeComponent();

    MyValue value = DeclaringClass.GetMyAttachedProperty(depObj); // value == null
}

Loadedイベント中にプロパティにアクセスしようとすると、次の値を取得できます。

// Constructor
public MyClassName()
{
    InitializeComponent();

    Loaded += OnLoaded;
}

void OnLoaded(object sender, RoutedEventArgs e)
{
    Loaded -= OnLoaded;

    MyValue value = DeclaringClass.GetMyAttachedProperty(depObj); // value != null

    // Do something with value
}

だから、これは私の質問に私をもたらします-継承されたアタッチされたプロパティにアクセスできるコントロールの存続期間の最初の段階は何ですか?Loaded代わりにイベントでそうするためのより良い場所はありますか?

4

1 に答える 1

1

最も早いのは、実際にはLoadedイベント ハンドラー内です。他の唯一の選択肢はコンストラクター (または道徳的に同等Initializedのイベント) ですが、依存関係プロパティが継承された値を想定するには時期尚早です。

MSDN で一般的なオブジェクトの有効期間イベントも参照してください。

于 2012-07-17T07:48:49.093 に答える