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);
        }
示例#2
0
        /// <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);
        }