Exemplo n.º 1
0
        /// <summary>
        /// Navigates the specified page.
        /// </summary>
        /// <param name="page">The page.</param>
        internal Task Navigate(FrameworkElement page)
        {
            _logger.Debug("Navigating to " + page.GetType().Name);
            var task = new TaskCompletionSource <bool>();

            Dispatcher.InvokeAsync(async() =>
            {
                var current = CurrentPage;

                await PageFrame.NavigateWithTransition(page);

                task.TrySetResult(true);

                _logger.Debug("Navigation complete to " + page.GetType().Name);

                EventHelper.FireEventIfNotNull(Navigated, this, new NavigationEventArgs
                {
                    NewPage = page,
                    OldPage = current
                }, _logger);

                Task.Run(() =>
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                });
            });

            return(task.Task);
        }