public Task NavigateAsync(object iViewModel, string Id = null, JavascriptBindingMode iMode = JavascriptBindingMode.TwoWay)
        {
            if ((iViewModel == null) || (_Navigating))
            {
                return(TaskHelper.Ended());
            }

            return(Navigate(_INavigationBuilder.Solve(iViewModel, Id).LocalPath, iViewModel, iMode));
        }
        public async Task <IHTMLBinding> NavigateAsync(object iViewModel, string id = null, JavascriptBindingMode iMode = JavascriptBindingMode.TwoWay)
        {
            if ((iViewModel == null) || (_Navigating))
            {
                return(null);
            }

            var viewPath = _UrlSolver.Solve(iViewModel, id);

            if (viewPath == null)
            {
                throw ExceptionHelper.Get($"Unable to locate ViewModel {iViewModel}");
            }

            return(await Navigate(viewPath, iViewModel, iMode));
        }