Xamarin.forms 无法绑定Xamarin WebView CanGoBack
绑定CanGoBack和CanGoForward的表单抛出一个错误:CanGoBack不可访问 它似乎正在处理VS的旧版本 编辑:完整代码如下Xamarin.forms 无法绑定Xamarin WebView CanGoBack,xamarin.forms,binding,Xamarin.forms,Binding,绑定CanGoBack和CanGoForward的表单抛出一个错误:CanGoBack不可访问 它似乎正在处理VS的旧版本 编辑:完整代码如下 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="WebViewDemo.WebViewDemoPage"> <ContentPage.Pa
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="WebViewDemo.WebViewDemoPage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness" iOS="10, 20, 10, 0" Android="10, 0" WinPhone="10, 0" />
</ContentPage.Padding>
<StackLayout>
<Entry Keyboard="Url" Placeholder="web address" Completed="OnEntryCompleted" /> <StackLayout Orientation="Horizontal" BindingContext="{x:Reference webView}">
<Button Text="⇐" FontSize="Large" HorizontalOptions="FillAndExpand" IsEnabled="{Binding CanGoBack}" Clicked="OnGoBackClicked" />
<Button Text="⇒" FontSize="Large" HorizontalOptions="FillAndExpand" IsEnabled="{Binding CanGoForward}" Clicked="OnGoForwardClicked" />
</StackLayout>
<WebView x:Name="webView" VerticalOptions="FillAndExpand" Source="https://xamarin.com" />
</StackLayout>
</ContentPage>
你知道如何正确绑定它吗
谢谢。我知道这个问题有点老了,但我想如果有人(像我一样)需要解决这个问题,我会分享我的解决方案 我通过完全放弃绑定并使用
WebView
的PropertyChanged事件解决了这个问题:
在内容页中:
<ContentPage>
<StackLayout Margin="2">
<StackLayout Orientation="Horizontal">
<Button x:Name="btnBack"
Text="Back"
HorizontalOptions="Start"
Clicked="OnBackButtonClicked"
IsEnabled="False" />
<Button x:Name="btnForward"
Text="Fwd"
HorizontalOptions="End"
Margin="5"
Clicked="OnForwardButtonClicked"
IsEnabled="False" />
</StackLayout>
<Label x:Name="labelLoading" Text="Loading..." IsVisible="false" />
<WebView x:Name="webView"
WidthRequest="1000"
HeightRequest="1000"
Navigated="WebViewNavigated"
Navigating="WebViewNavigating"
PropertyChanged="WebView_PropertyChanged"/>
</StackLayout>
</ContentPage>
我希望这对某人有所帮助……我知道这个问题有点老了,但我想如果有人(像我一样)需要解决这个问题,我会分享我的解决方案 我通过完全放弃绑定并使用
WebView
的PropertyChanged事件解决了这个问题:
在内容页中:
<ContentPage>
<StackLayout Margin="2">
<StackLayout Orientation="Horizontal">
<Button x:Name="btnBack"
Text="Back"
HorizontalOptions="Start"
Clicked="OnBackButtonClicked"
IsEnabled="False" />
<Button x:Name="btnForward"
Text="Fwd"
HorizontalOptions="End"
Margin="5"
Clicked="OnForwardButtonClicked"
IsEnabled="False" />
</StackLayout>
<Label x:Name="labelLoading" Text="Loading..." IsVisible="false" />
<WebView x:Name="webView"
WidthRequest="1000"
HeightRequest="1000"
Navigated="WebViewNavigated"
Navigating="WebViewNavigating"
PropertyChanged="WebView_PropertyChanged"/>
</StackLayout>
</ContentPage>
我希望这有助于其他人…您有绑定这些属性的viewmodel吗?我正在阅读“使用Xamarin.Forms创建移动应用”一书。完整代码如下。只要我输入IsEnabled=“{Binding CanGoBack}”,CanGoBack就会被标记为错误。我可以无错误地绑定其他变量,例如:IsEnabled=“{Binding Height}”您可以删除项目中的文件夹obj和bin。然后清理并重建项目。我使用了您的代码,效果很好。我认为这与VS2017有关。我用的是15.9.5和Xamarin 4.12.3.78。我已经建立了一个新项目,当我试图映射CanGoForward时,VS显示错误,该var不可访问。我尝试过以不同的方式(上下文、源/路径等)绑定它,但仍然遇到相同的错误。请提供一个基本的演示,可以重现这个问题,以便我可以在我身边测试它。你有一个绑定这些属性的viewmodel吗?我正在阅读“使用Xamarin.Forms创建移动应用”一书。完整代码如下。只要我输入IsEnabled=“{Binding CanGoBack}”,CanGoBack就会被标记为错误。我可以无错误地绑定其他变量,例如:IsEnabled=“{Binding Height}”您可以删除项目中的文件夹obj和bin。然后清理并重建项目。我使用了您的代码,效果很好。我认为这与VS2017有关。我用的是15.9.5和Xamarin 4.12.3.78。我已经建立了一个新项目,当我试图映射CanGoForward时,VS显示错误,该var不可访问。我尝试过用不同的方式(上下文、源/路径等)绑定它,但仍然遇到相同的错误。请提供一个基本的演示,可以重现这个问题,以便我可以在我身边测试它。
private void WebViewNavigated(object sender, WebNavigatedEventArgs e)
{
labelLoading.IsVisible = false;
}
private void WebViewNavigating(object sender, WebNavigatingEventArgs e)
{
labelLoading.IsVisible = true;
}
private void WebView_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
switch(e.PropertyName)
{
case "CanGoBack":
btnBack.IsEnabled = ((WebView)sender).CanGoBack;
break;
case "CanGoForward":
btnForward.IsEnabled = ((WebView)sender).CanGoForward;
break;
}
}