如何在 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 控件中运行?
如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?
我如何无法在 WP7 的全景视图中处理 selectionchange 事件?