我创建了一些自定义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