private async void OnContentUnloaded( object sender, EventArgs eventArgs) { if (!(sender is FrameworkElement content)) { return; } var registrationInfo = Registrations?.FirstOrDefault( registration => registration.ViewType == content.GetType()); if (registrationInfo == null) { DetachDisappearingEventListener(content); return; } if (content.DataContext is IHandleClosing viewModel) { await viewModel.OnClosing(); } if (registrationInfo.InterestedType != null) { await ResolveAndInformListenerAsync( registrationInfo.InterestedType) .ConfigureAwait(false); } DetachDisappearingEventListener(content); }
/// <inheritdoc/> public void UnRegister(string taskName) { var task = Registrations.FirstOrDefault(r => r.Name == taskName); if (task != null) { task.Unregister(false); Registrations.Remove(task); } }
private async void OnViewClosing( object sender, EventArgs eventArgs) { if (!(sender is Page page)) { return; } var registrationInfo = Registrations?.FirstOrDefault( registration => registration.ViewType == page.GetType()); if (registrationInfo == null) { DetachDisappearingEventListener( page); return; } if (page.BindingContext is IHandleClosing viewModel) { await viewModel.OnClosing(); } if (registrationInfo.InterestedType != null) { await ResolveAndInformListenerAsync( registrationInfo.InterestedType) .ConfigureAwait(false); } DetachDisappearingEventListener(page); }