internal Tuple <ValidationReason, ValidationResults, Exception> CoreValidationWork(ValidationReason reason, CancellationToken cancellationToken)
        {
            this.settings.CancellationToken = cancellationToken;
            ValidationResults results   = null;
            Exception         exception = null;

            try
            {
                ValidationRoot rootElement = this.GetRootElement();
                if (rootElement != null)
                {
                    results = rootElement.Validate(this.Settings);
                }
            }
            catch (Exception e)
            {
                if (Fx.IsFatal(e) || e is OperationCanceledException)
                {
                    throw;
                }

                exception = e;
            }

            return(Tuple.Create(reason, results, exception));
        }
        public void NavigateToError(string id)
        {
            if (id == null)
            {
                throw FxTrace.Exception.ArgumentNull("id");
            }

            ValidationRoot rootElement = this.GetRootElement();

            if (rootElement != null)
            {
                Activity errorElement = rootElement.Resolve(id);
                this.NavigateToErrorOnDispatcherThread(errorElement);
            }
        }