OnApplyTemplate()でテンプレートの子にいくつかのイベントを登録するカスタムwp7Silverlightカスタムコントロールを作成しています。
メモリリークを防ぐために、これらの登録を解除する必要があると思います。でもいつ?アンロードされたイベントを試してみます-これは機能しますが、これに問題があります。シナリオ:Page1には、カスタムコントロールがあります。次に、Page1からPage2に移動すると、カスタムコントロールのUnloadedイベントが呼び出されます。ここまでは順調ですね。しかし、その後、カスタムコントロールのイベントが再度登録されないため、そのコントロールを使用しても何も起こりません。
次に、すべてが期待どおりに機能し、メモリリークが発生しないように、イベントを正しく登録および登録解除する必要がありますか?
ご協力いただきありがとうございます!
編集:
OnApplyTemplate()メソッドの例を次に示します。
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
_itemsContainer = GetTemplateChild("PART_Items") as ItemsControl;
if (_itemsContainer != null)
{
// When to detach this event for correctly object lifetime?
_itemsContainer.Tap += ItemsContainer_Tap;
}
}