我是C#和Xamarin Forms的新手。我正在使用webview并从API获取源URL。 (对于这个问题,我对该值进行了硬编码)。我绑定了源URL而不是将值添加到XAML中的Source。但它不起作用。堆栈和论坛中的解决方案很少。我试过了。但没有奏效。有人请帮助我解决这个问题。
这是我的XAML
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyProject.Views.NewRegistration.PrivacyWebView">
<ContentPage.Content>
<AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<WebView Source="{Binding WebViewSource}" HeightRequest= "300" WidthRequest="250" Navigated="Handle_Navigated" VerticalOptions="FillAndExpand" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1" />
<ActivityIndicator x:Name="loader" IsRunning="true" IsVisible="true" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1"/>
</AbsoluteLayout>
</ContentPage.Content>
</ContentPage>
这就是我绑定源的方式。 (在Codebehind和ViewModel中也尝试过这个)
public HtmlWebViewSource WebViewSource
{
get
{
return new HtmlWebViewSource { Html = "https://www.stackoverflow.com" };
}
}
您使用的是错误的,在使用HtmlWebViewSource
时,您需要指定实际的HTML而不是您要去的URL。如果要导航到URL,请在Source
属性中指定它。
如果你想绑定它,你必须实现这样的东西。
在视图模型中创建一个字符串属性:
public string UrlToGoTo { get; set; }
然后像往常一样设置它,确保以某种方式实现INotifyPropertyChanged
。
然后,像这样连接你的WebView
:<WebView Source="{Binding UrlToGoTo}" HeightRequest= "300" WidthRequest="250" Navigated="Handle_Navigated" VerticalOptions="FillAndExpand" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1" />