Я создаю несколько пользовательских элементов управления wp7 silverlight, которые регистрируют некоторые события в дочерних элементах шаблона в OnApplyTemplate ().
Я думаю, что должен отменить их регистрацию, чтобы предотвратить утечку памяти. Но когда? Я попробовал разгрузить событие - это работает, но у меня есть проблема с этим.
Сценарий:
На Page1 у меня есть свой пользовательский контроль. Затем происходит переход от Страницы 1 к Странице 2, вызывается событие Unloaded моего пользовательского элемента управления. Все идет нормально. Но затем я возвращаюсь назад, события моего пользовательского элемента управления не регистрируются снова, поэтому с этим элементом управления ничего не происходит.
Тогда я должен правильно регистрировать и отменять регистрацию событий, чтобы все работало, как ожидалось, и я не мог создать утечку памяти?
Спасибо за вашу помощь!
Edit:
Вот пример моего метода 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;
}
}