【问题标题】:My piece of HTML won't display in my WebView in C#/XAML我的 HTML 不会显示在 C#/XAML 中的 WebView 中
【发布时间】:2017-10-06 13:58:40
【问题描述】:

我的应用程序读取 RSS 提要并将其显示在列表中。这主要是有效的:

var rssfeed = new RSSfeed();    // make instance to use
string s = await rssfeed.GetHttpStr(feedUrl);   // get feed as string
this.items = rssfeed.ParseRSS(s); // parse RSS into a list

(RSSfeed 是提要中项目的模型。s 是 http 响应字符串。ParseRSS 是一种使用模型将字符串转换为对象的方法。)

(为了简短起见,我已经排除了方法背后的代码。如果您愿意,我也可以根据要求发布。)

以下循环会将每个项目放入 ListView。

        foreach (var item in myItems)
        {
            var htmlSource = new HtmlWebViewSource
            {
                Html = @"<html><body>" + item.Desc + "</body></html>"
            };
            this.items.Add(new RSSItem
            {
                Title = item.Title,
                Link = item.Link,
                ID = item.Id,
                Desc = htmlSource.Html
            });
        }

这是我的 XAML,在我的 DataTemplate 中:

            <ViewCell>
                <Frame OutlineColor="Gray">
                    <StackLayout Margin="5" Padding="5">
                        <Label Text="{Binding Title}" TextColor="SteelBlue" />
                        <Label Text="{Binding Link}" FontSize="10" TextColor="Green" />
                        <Label Text="{Binding Desc}" TextColor="Fuchsia" />
                        <Grid RowSpacing="0" ColumnSpacing="0" Margin="0" Padding="0" BackgroundColor="Transparent">
                            <WebView Source="{Binding Desc}" />
                        </Grid>
                    </StackLayout>
                </Frame>
            </ViewCell>

(显然,包裹在 Grid 中的 WebView 不需要 Width/HeightRequest - 这是真的吗?是否有另一种方法可以使其动态调整到内容的大小?)

ListView 显示正常(和大多数 RSS 字段),但我的 WebView 是空的。在 WebView 中显示“Desc”(一个简单的 HTML 图像标记)需要什么?

【问题讨论】:

    标签: c# xaml data-binding webview rss


    【解决方案1】:

    WebView.SourceUri 而不是 string。如果要查看自定义 HTML 内容,则需要使用 NavigateToString(html) 方法。不幸的是,你也不能绑定到那个,但是有一个workaround found here

    【讨论】:

    • 我已经阅读了这篇文章。我会再试一次。你用过吗?你知道如何使内容动态适合吗?
    • 它可能有效,您知道如何消除错误:错误 CS0246 找不到类型或命名空间名称“DependencyProperty”(您是否缺少 using 指令或程序集引用?)和错误CS0246 找不到类型或命名空间名称“DependencyObject”(您是否缺少 using 指令或程序集引用?)等?
    • 您提供的那个链接已经超过 3 年了。 IT 世界的变化非常快。你能确认它有效吗?
    • 是的,我使用它。我一直在玩 WebViews,如果你想显示自己的 HTML,你必须创建一个包含内容的临时文件并将源 URL 指向它,或者使用NavigateToString()。如果您找到替代解决方案,请在此处发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多