我是Xamarin.Forms的新人,请原谅我,如果我没有使用正确的话。我创建了一个名为" WebBrowser"的解决方案。为了创建一个简单的移动浏览器;目前我正在处理公共文件 MainPage.xaml 和 MainPage.xaml.cs ,我正在 Android 5.1 智能手机。 我使用 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;
}
为了启用/禁用&#34;箭头&#34;当用户可以/不能进入上一页/下一页时按钮。
在这种情况下,appWebView.CanGoBack
和appWebView.CanGoForward
始终会返回false,即使它应该为true。但是,如果我保持启用按钮并在用户单击其中一个按钮时检查其值,则两者都会返回正确的值。
为什么它在onPageLoaded()
方法中不起作用?
答案 0 :(得分:1)
这不是您要求的确切答案,但您可以使用Bindings资源来执行此类操作。像这样:
<Button Text="Back"
x:Name="backButton"
IsEnabled="{Binding CanGoBack, Source={Reference appWebView}}"
Clicked="previousPage"/>
<Button Text="Next"
x:Name="nextButton"
IsEnabled="{Binding CanGoFoward, Source={Reference appWebView}}"
Clicked="nextPage"/>
<WebView x:Name="appWebView"
Source="https://www.google.com/"
Navigating="onLoadingPage"/>
这更简单。如果您想了解有关Xamarin.Forms的绑定的更多信息,请查看this article。
因此,如果仅存在onPageLoaded
事件处理程序,则可以将其除去。
我希望它有所帮助。