gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:07:45 25 4
gpt4 key购买 nike

我是 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() 方法中不起作用?

最佳答案

这不是您要求的确切答案,但您可以使用 Bindings 资源来做这样的事情。像这样:

<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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com