private void DoNavigate(Uri source, Action <NavigationResult> navigationCallback, NavigationParameters navigationParameters)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            if (this.Region == null)
            {
                throw new InvalidOperationException(Application.Current.FindResource("NavigationServiceHasNoRegion").ToString());
            }

            this.currentNavigationContext = new NavigationContext(this, source, navigationParameters);

            // starts querying the active views
            RequestCanNavigateFromOnCurrentlyActiveView(
                this.currentNavigationContext,
                navigationCallback,
                this.Region.ActiveViews.ToArray(),
                0);
        }
        /// <summary>
        /// Initiates navigation to the specified target.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="navigationCallback">A callback to execute when the navigation request is completed.</param>
        /// <param name="navigationParameters">The navigation parameters specific to the navigation request.</param>
        public void RequestNavigate(Uri target, Action <NavigationResult> navigationCallback, NavigationParameters navigationParameters)
        {
            if (navigationCallback == null)
            {
                throw new ArgumentNullException("navigationCallback");
            }

            try
            {
                this.DoNavigate(target, navigationCallback, navigationParameters);
            }
            catch (Exception e)
            {
                this.NotifyNavigationFailed(new NavigationContext(this, target), navigationCallback, e);
            }
        }