我創建了一些自定義wp7 silverlight自定義控件,它們在OnApplyTemplate()中的模板子模板上註冊了一些事件。SL自定義控件:取消註冊事件以防止內存泄漏?
我想我必須取消註冊這些以防止內存泄漏。但當?我會嘗試卸載的事件 - 這有效,但我有這個問題。 場景: 在Page1我有我的自定義控件。然後,從Page1導航到第2頁,調用我的自定義控件的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;
}
}
謝謝,但我認爲這不是我的目標。我已經添加了一個清晰示例的示例。 – 2011-12-23 12:14:42
我更新了我的答案。 – 2011-12-23 12:39:56
+1,但我也在該字段周圍放置一個屬性,並將此代碼放置在setter中以避免混淆OnApplyTemplate。 – AnthonyWJones 2011-12-23 14:26:28