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; }