Xamarin表单 – 让webview回归

大家早,

我正在开发Xamarin.Forms中的一个小型跨平台webview项目。 我有webview工作,但我想添加一个工具栏,其中有一个后退和前进按钮。

我尝试了许多不同的方法,但似乎没有什么工作特别好。 我试着按照这个人发布导航工具栏来实现这个function

我将在下面附上我的代码,如果有人可以帮我解决这个或者一个很棒的解决方案!

如果此问题已经被其他用户先前回答,那么我道歉。

App.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Xamarin.Forms; namespace DisplayWebPage { public class App : Application { public App() { // The root page of your application MainPage = new WebPage(); } protected override void OnStart() { // Handle when your app starts } protected override void OnSleep() { // Handle when your app sleeps } protected override void OnResume() { // Handle when your app resumes } } } 

WebPage.cs

 using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Text; using Xamarin.Forms; namespace DisplayWebPage { public class WebPage : ContentPage { public WebPage() { Content = new StackLayout { Children = { new WebView { Source = "http://www.google.com" } } }; } } } 

期待得到答案,因为我已经坚持了很长一段时间了。

亲切的问候

像这样编辑你的代码。 首先将您的MainPage包装在NavigationPage以使工具栏可见。

它基本上归结为创建一个变量,以便更容易访问您的WebView

然后在ToolbarItems集合中创建一个可以触发事件的按钮。 在那种情况下,您可以在WebView上调用已经可用的GoBack()方法。

您可能想查看WebView上的Xamarin文档 ,检查您是否可以实际返回CanGoBack属性可能是个好主意。

请注意,我已经分配了一个BackIcon.png您可以将其替换为null或当然是您自己的图标。 此外,代码还没有经过测试,这只是我的头脑中,所以可能会遗漏一些分号或东西。

App.cs

 // ... other code public App() { // The root page of your application MainPage = new NavigationPage(new WebPage()); } // ... other code 

WebPage.cs

 using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Text; using Xamarin.Forms; namespace DisplayWebPage { public class WebPage : ContentPage { private WebView _webView; public WebPage() { // Assign a WebView to a global variable _webView = new WebView { Source = "http://www.google.com" }; // Create toolbar items here ToolbarItems.Add(new ToolbarItem("Back", "BackIcon.png", () => { _webview.GoBack(); })); Content = new StackLayout { Children = { _webView} }; } } } 

请尝试以下步骤:在WebView对象中添加Navigated事件

  List history = new List(); WebView myWebView = new WebView { Source = "http://www.google.com" }; myWebView.Navigated += WebViewPage_Navigated; Children = myWebView; 

然后定义以下function:

 public void WebViewPage_Navigated(object sender, WebNavigatedEventArgs e) { WebNavigationResult result = e.Result; if(result.Equals(WebNavigationResult.Success)){ currentUrl = e.Url; history.Add(currentUrl); } } 

现在,您可以根据历史列表计数和当前元素绑定“Forward”和“Prev”元素(如果移动到后面,则添加到转发列表)。 希望这可以帮助。