c# - 页面加载后,Xamarin WebView.CanGoBack 和 CanGoForward 始终返回 false

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

我是 Xamarin.Forms 的新手,如果我没有使用正确的词语,请原谅。我创建了一个名为“WebBrowser”的解决方案,以创建一个简单的移动浏览器;目前我正在处理通用文件 MainPage.xamlMainPage.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.CanGoBackappWebView.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/

相关文章:

java - 向上按钮退出应用程序?

visual-studio - Visual Studio 2012 Professional 中缺少 Windows 应用商店模板

c# - Mock 不包含 Setup 的定义

c# - WebGrid 的 header 格式

c# - AJAX 页面的 EpiServer 本地化

c# - 正则表达式回顾(?)。最多只有标识符后面和后面的第一个标签

android - Google 的 android 位置自动完成功能一直给我 "Can' t 加载搜索结果”

android - Android 上的 WiFi 扫描

c# - Visual Studio : Multiple post-build commands?

c++ - cxxTestgen.py 抛出语法错误