OnApplyTemplate()의 템플릿 하위에 일부 이벤트를 등록하는 사용자 지정 wp7 Silverlight 사용자 지정 컨트롤을 만듭니다.SL 사용자 지정 컨트롤 : 메모리 누수를 방지하기 위해 이벤트를 등록 취소 할 때?
나는 메모리 누출을 막기 위해 이들을 등록 해제해야한다고 생각합니다. 하지만 때? 나는 언로드 된 이벤트를 시도 할 것입니다 -이 작동하지만이 문제가 있습니다. 시나리오 : 페이지 1 사용자 정의 컨트롤이 있습니다. 그런 다음 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;
}
}
감사하지만 내 목표가 아닌 것 같습니다. 예를 들어 명확한 예제를 추가했습니다. –
내 대답이 업데이트되었습니다. –
+1 필드 주위에 Property를 배치하고 OnApplyTemplate을 어수선하게 다루지 않으려면이 코드를 setter에 넣으십시오. – AnthonyWJones