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”元素(如果移动到后面,则添加到转发列表)。 希望这可以帮助。