wp7.1& 8 - WebBrowser - NavigateToString - LoadImage

时间:2013-12-03 09:36:43

标签: c# vb.net windows-phone-7 windows-phone-8 webbrowser-control

我们在运行时生成了几个自定义html页面,并使用NavigateToString在webbrowser上加载这些html。

我们有许多在运行时生成并且显示正确的内容,但问题是加载存储在应用程序内的图像文件夹中的图像。

使用IsolatedStore和Navigate搜索Stackoverflow很多建议,但我们的html是在运行时生成的。是否可以使用NavigateTostring加载Image?

e.g。代码片段

strHtml = strHtml& “”

-------


                "<img style=\'text-align: center;\' src=\""file:///XYZ.jpg\"">" & _

Private Sub WebBrowser_OnLoaded(sender As Object, e As RoutedEventArgs)
    webBrowser1.NavigateToString(strHtml)
End Sub

不显示XYZ.jpg。

我们是否真的需要每次在Isolatedstorage设备上保存html以及图像然后让webbrowser加载它?这没有意义。

如果您有办法使用NavigateToString

实现此功能,请告诉我

2 个答案:

答案 0 :(得分:1)

确定。我解决了..以下步骤

  1. 将图像保存到IsoStorage
  2. 使用String创建HTML并将HTML存储到IsoStorage
  3. 使用WebBrowser.Navigate(URI)加载存储的HTML。
  4. 不确定为什么我根本无法使用NavigatetoString来处理图像!

答案 1 :(得分:0)

如果html页面是在运行时生成的,那么你必须将正确的图像路径传递到html sting的旁边,根据你的代码,你在放置html时无法正常工作的路径。

1)您必须将所有图像复制到IsolatedStorage。

重要的是,选择解决方案资源管理器中的所有图像,然后按F4键并设置构建操作 - 内容,复制到输出目录 - 始终复制。

请参阅以下代码段:您可以将这些图像复制一次到IsolatedStorage。

private void CopyToIsolatedStorage(string file, IsolatedStorageFile store, bool overwrite = true)
{
            if (store.FileExists(file) && !overwrite)
                return;

            using (var resourceStream = Application.GetResourceStream(new Uri(file, UriKind.Relative)).Stream)
            using (var fileStream = store.OpenFile(file, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                int bytesRead;
                var buffer = new byte[resourceStream.Length];
                while ((bytesRead = resourceStream.Read(buffer, 0, buffer.Length)) > 0)
                    fileStream.Write(buffer, 0, bytesRead);
            }
}

希望它有所帮助。