이벤트 구독 취소 시점은 궁금합니다. 구독하기 전에 구독을 취소하는 것이 일반적입니다 (또는 대부분 이벤트가 호출 된 시간부터). xaml은 xaml이 처리하며 추가 작업을 수행 할 필요가 없음). 하지만 지금은 컨스트럭터에 등록하고 싶을 때 상황이 나빠요, 어디에서 탈퇴합니까? 언로드 이벤트 인 에서 작업을 시도했지만 내 컨트롤이 언로드 된 후 다시 생성하지 않고 다시로드되었습니다.맞춤 컨트롤에 대한 이벤트 수신 거부 위치
편집 내가 폐기 내가 무시할 수 있습니다 방법 또는 이런 일이있을 것을 기대했다, 분명히 내가 객체가 더 이상 필요하지 않을 때 탈퇴 할 수 있도록합니다. 아이디어가 있으십니까?
샘플 코드
public class MYListBox : ListBox
{
public MYListBox()
{
SelectionChanged += MYListBox_SelectionChanged;
Unloaded += MYListBox_Unloaded;
}
private void MYListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void MYListBox_Unloaded(object sender, RoutedEventArgs e)
{
SelectionChanged -= MYListBox_SelectionChanged;
Unloaded -= MYListBox_Unloaded;
}
}
그래서 때로는 XAML
<UserControl x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1">
<wpfApplication1:MYListBox />
</UserControl >
, 나는 사용자가 다른 곳으로 이동 한 다음 동일한 인스턴스에 컴백을 할 수있게됩니다. 사용자가 다시 돌아올 때 탐색하는 또 다른 시간은 새로운 인스턴스가됩니다. 그래서 두 번째 상황에서 저는 그 사건에서 탈퇴 할 필요가 있다고 생각했습니다.
감사합니다 :)
로드 된 이벤트로 구독 할 수 있습니다. –
@WingerSendon 안녕하세요, 질문을 수정하여 명확하게 처리했습니다. SelectionChanged 내 코드가 실행되지 않기 때문에 Loaded 이벤트에서 수신 거부 할 수 없습니다. 나는이 MyListBox가 더 이상 필요하지 않을 때만 구독을 취소하려고합니다. – adminSoftDK