XAML WebView绑定到不在Xamarin Forms中的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XAML WebView绑定到不在Xamarin Forms中的字符串相关的知识,希望对你有一定的参考价值。

我是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" />

以上是关于XAML WebView绑定到不在Xamarin Forms中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin表示WebView性能

Xamarin 表单 ListView ItemTapped/ItemSelected 命令绑定在 XAML

Xamarin XAML语言教程控件模板的模板绑定

将多个类的数据绑定到单个列表视图/xamarin 表单

Xamarin iOS - XAML IsVisible 绑定在 ItemsSource 更改时不会更新

Xamarin表单ListView ItemTapped / ItemSelected在XAML上绑定命令