我是 Xamarin.Forms 的新手,如果我没有使用正确的词语,请原谅。我创建了一个名为“WebBrowser”的解决方案,以创建一个简单的移动浏览器;目前我正在处理通用文件 MainPage.xaml 和 MainPage.xaml.cs,并且我正在 Android 5.1< 上测试代码/strong> 智能手机。 我使用 Microsoft Visual Studio 2017 15.5.4。
在MainPage.xaml中我指定了以下代码
<Button Text="Back"
x:Name="backButton"
IsEnabled="False"
Clicked="previousPage"/>
<Button Text="Next"
x:Name="nextButton"
IsEnabled="False"
Clicked="nextPage"/>
<WebView x:Name="appWebView"
Source="https://www.google.com/"
Navigating="onLoadingPage"
Navigated="onPageLoaded"/>
因此,当加载页面时,会调用 onPageLoaded()
方法。
该方法包含以下代码
private void onPageLoaded(object sender, EventArgs e)
{
if (appWebView.CanGoBack)
backButton.IsEnabled = true;
else
backButton.IsEnabled = false;
if (appWebView.CanGoForward)
nextButton.IsEnabled = true;
else
nextButton.IsEnabled = false;
}
以便在用户可以/不能转到上一页/下一页时启用/禁用“箭头”按钮。
在这种情况下,appWebView.CanGoBack
和 appWebView.CanGoForward
始终返回 false,即使它应该为 true。但是,如果我保持按钮启用状态,并在用户单击其中一个按钮时检查它们的值,则两者都会返回正确的值。
为什么它在 onPageLoaded()
方法中不起作用?
最佳答案
这不是您所要求的确切答案,但您可以使用绑定(bind)资源来执行此操作。像这样:
<Button Text="Back"
x:Name="backButton"
IsEnabled="{Binding CanGoBack, Source={Reference appWebView}}"
Clicked="previousPage"/>
<Button Text="Next"
x:Name="nextButton"
IsEnabled="{Binding CanGoForward, Source={Reference appWebView}}"
Clicked="nextPage"/>
<WebView x:Name="appWebView"
Source="https://www.google.com/"
Navigating="onLoadingPage"/>
更简单了。看看this article如果您想了解有关 Xamarin.Forms 上的绑定(bind)的更多信息。
因此,如果 onPageLoaded
事件处理程序仅用于此目的,您可以将其删除。
希望对您有所帮助。
[编辑]拼写更正CanGoForward
关于c# - 页面加载后,Xamarin WebView.CanGoBack 和 CanGoForward 始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690492/