Xamarin WebView.CanGoBack和CanGoForward在页面加载后总是返回false

时间:2018-02-08 16:38:24

标签: c# android visual-studio xamarin xamarin.forms

我是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.CanGoBackappWebView.CanGoForward 始终会返回false,即使它应该为true。但是,如果我保持启用按钮并在用户单击其中一个按钮时检查其值,则两者都会返回正确的值。

为什么它在onPageLoaded()方法中不起作用?

1 个答案:

答案 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事件处理程序,则可以将其除去。

我希望它有所帮助。