Exemple #1
0
        protected override Task OnLoadStateAsync(LoadStateEventArgs e)
        {
            if (e.NavigationEventArgs.NavigationMode == NavigationMode.New || this.ViewModel == null)
            {
                WebViewModelBase vm = null;
                if (e.Parameter is WebViewArguments args)
                {
                    vm = PlatformBase.CurrentCore.CreateWebViewModel(args);
                }
                else if (e.Parameter is string webAddress)
                {
                    vm = PlatformBase.CurrentCore.CreateWebViewModel(new WebViewArguments(webAddress));
                }
                else if (e.NavigationEventArgs.Parameter != null)
                {
                    throw new System.ArgumentException($"Invalid argument of type {e.NavigationEventArgs.Parameter.GetType().FullName} was supplied to WebView.");
                }
                else
                {
                    throw new System.ArgumentNullException("No argument was supplied to WebView.");
                }
                this.SetViewModel(vm);
            }

            return(base.OnLoadStateAsync(e));
        }
        /// <summary>
        /// Configures a WebBrowserViewModel instance to get notified of WebView control events.
        /// </summary>
        /// <param name="vm"></param>
        private void SetCurrentViewModel(WebViewModelBase vm)
        {
            if (this.ViewModel != null)
            {
                this.ViewModel.GoHomeRequested      -= ViewModel_GoHomeRequested;
                this.ViewModel.RefreshRequested     -= ViewModel_RefreshRequested;
                this.ViewModel.GoForwardRequested   -= ViewModel_GoForwardRequested;
                this.ViewModel.GoBackwardsRequested -= ViewModel_GoBackwardsRequested;
                this.ViewModel.NavigateToRequested  -= ViewModel_NavigateToRequested;
                this.ViewModel.BrowserInstance       = null;

                webView.NavigationStarting  -= webView_Navigating;
                webView.NavigationCompleted -= webView_Navigated;

                while (webView.CanGoBack)
                {
                    webView.GoBack();
                }
            }

            this.ViewModel = vm;

            if (this.ViewModel != null)
            {
                webView.NavigationStarting  += webView_Navigating;
                webView.NavigationCompleted += webView_Navigated;

                this.ViewModel.BrowserInstance = webView;
                this.ViewModel.SetBrowserFunctions(() => webView.CanGoBack, () => webView.CanGoForward);
                this.ViewModel.GoHomeRequested      += ViewModel_GoHomeRequested;
                this.ViewModel.RefreshRequested     += ViewModel_RefreshRequested;
                this.ViewModel.GoForwardRequested   += ViewModel_GoForwardRequested;
                this.ViewModel.GoBackwardsRequested += ViewModel_GoBackwardsRequested;
                this.ViewModel.NavigateToRequested  += ViewModel_NavigateToRequested;

                this.ViewModel.InitialNavigation();
            }
        }
 public JsonWebRequest(WebViewModelBase parent)
 {
     Cookies = parent.Cookies;
 }