如何在 WP7 的 WebBrowser 控件中读取现有的 html 文件?

Posted

技术标签:

【中文标题】如何在 WP7 的 WebBrowser 控件中读取现有的 html 文件?【英文标题】:How to read an existing html file in the WebBrowser control in WP7? 【发布时间】:2011-09-27 15:22:53 【问题描述】:

如何在WP7的WebBrowser控件中读取已有的html文件?

我试过了:

    流流 = Assembly.GetExecutingAssembly().GetManifestResourceStream("abc.htm"); StreamReader reader = new StreamReader(stream); 字符串 html = reader.ReadToEnd(); Browser.NavigateToString(html);

    Browser.Navigate(new Uri("abc.htm", UriKind.Relative));

    var rs = Application.GetResourceStream(new Uri("abc.htm", UriKind.Relative)); StreamReader sr = new StreamReader(rs.Stream); 字符串 html = sr.ReadToEnd(); Browser.NavigateToString(html);

这三个都不起作用。方法 1 和 3 给出 NullReferenceException 因为流返回 null,基本上它没有读取我的 html 文件。

这里有什么问题?我该如何解决?

【问题讨论】:

【参考方案1】:

当您使用数字 3 时,请确保您的 HTML 文件的构建类型设置为“内容”。

【讨论】:

对不起 - 我在哪里检查? 选择 HTML 文件并在 Visual Studio 中查看其属性(通常在 VS 的右下角)。有一段写着Build Action。将其设置为content 谢谢!。是的,我看到设置为“内容”。还是不行:( 如果流是null,则找不到。你确定你有正确的目录路径吗?文件肯定是htm 而不是html?我在这里用其他方法写了一篇文章(在 cmets 中有一个):phone7.wordpress.com/2010/08/08/… 路径和文件名是正确的。不知道为什么找不到它...是的,我使用了链接中的所有方法。【参考方案2】:

如果您想使用选项 2,则必须先将文件复制到隔离存储,如果它需要引用任何其他文件,因为在其中无法使用相对路径(到其他文档、图像、js、css 等)如果直接从 XAP 加载,则为文档。

【讨论】:

【参考方案3】:

好的,下面是一个示例:

在 MainPage.xaml 中:

<Grid x:Name="LayoutRoot" Background="Transparent">
    <phone:WebBrowser x:Name="MyBrowser" 
                      HorizontalAlignment="Stretch"  
                      VerticalAlignment="Stretch" />
</Grid> 

在 MainPage.xaml.cs 中

    public MainPage()
    
        InitializeComponent();
        var rs = Application.GetResourceStream(new Uri("abc.html", UriKind.Relative)); 
        StreamReader sr = new StreamReader(rs.Stream); 
        string html = sr.ReadToEnd(); 
        this.MyBrowser.NavigateToString(html);
    

确保您在项目的根文件夹中有文件“abc.html”(检查拼写错误,您的示例代码是“abc.htm”)。构建操作为“内容”,“复制到输出目录”为“不复制”。它应该在浏览器中显示页面。

【讨论】:

嗨 - 这个也不起作用..即使路径和文件名正确,它也会给我 NullReferenceException..【参考方案4】:

对于第一个和第三个: 将 html 文件的 Build Action 属性设置为“Resource” 否则它会给你 NullReferenceException

对于第二个: WP7 中的浏览器控件无法直接导航到项目中添加的 html 文件。为此,html 文件必须位于独立存储中。 试试吧,我希望它会工作。

(标记答案,如果有帮助的话)。

【讨论】:

【参考方案5】:

如果你在按钮内添加命令,它会正常工作:

    private void htmlLoader(object sender, EventArgs e)
    
        var rs = Application.GetResourceStream(new Uri("abc.html", UriKind.Relative));
        StreamReader sr = new StreamReader(rs.Stream);
        string html = sr.ReadToEnd();
        this.MyBrowser.NavigateToString(html);
    

【讨论】:

以上是关于如何在 WP7 的 WebBrowser 控件中读取现有的 html 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 JavaScript 在 WebBrowser 控件中运行?

如何在 WebBrowser 控件中注入 CSS?

如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?

我如何无法在 WP7 的全景视图中处理 selectionchange 事件?

如何在 C# 中使用 WebBrowser 控件清除浏览历史记录

如何使用 WebBrowser 控件模拟鼠标单击