private void OnMainFrameAfterNavigation()
        {
            CurrentPage = GetCurrentPage();

            GoBackCommand.RaiseCanExecuteChanged();
            GoForwardCommand.RaiseCanExecuteChanged();
            NavigateToHomeCommand.RaiseCanExecuteChanged();

            _usageCalculator.UpdateUsage(CurrentPage);
        }
        public void Navigate(Guid pageId)
        {
            var page = Module.ChartingPages[pageId];

            _mainFrame.Navigate(new Uri(page.Uri, UriKind.RelativeOrAbsolute));

            GoBackCommand.RaiseCanExecuteChanged();
            GoForwardCommand.RaiseCanExecuteChanged();
            NavigateToHomeCommand.RaiseCanExecuteChanged();
        }
        public void GoForward()
        {
            var lastExamplePage = CurrentExample as ExampleAppPage;
            var lastExampleView = _currentExample;

            _history.Redo();

            var example = _history.Current as Example;

            if (example != null)
            {
                Navigate(example);
                ServiceLocator.Container.Resolve <IModule>().CurrentExample = example;
            }
            else
            {
                Navigate((Guid)_history.Current);
            }

            ServiceLocator.Container.Resolve <ExampleViewModel>().ExportExampleViewModel.IsExportVisible            = false;
            ServiceLocator.Container.Resolve <ExampleViewModel>().BreadCrumbViewModel.IsShowingBreadcrumbNavigation = false;

            GoBackCommand.RaiseCanExecuteChanged();
            GoForwardCommand.RaiseCanExecuteChanged();
            NavigateToHomeCommand.RaiseCanExecuteChanged();

            if (lastExamplePage != null)
            {
                // Required to release memory from last example
                lastExamplePage.ViewModel = null;
            }

            if (lastExampleView != null)
            {
                lastExampleView.View = null;
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }