在WebView Metro Style应用程序中加载本地html文件

Nas*_*mic 10 c# webview microsoft-metro

我在Metro风格应用程序中的WebView控件中加载html文件时遇到了一些麻烦.我一直在网上搜索,发现你无法使用NavigateTo方法加载本地html文件.我还发现有一种解决方法可以使用控件的NavigateToString方法.下面是我看到的链接:http: //social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/9cd8614d-2dc8-48ac-9cd9-57b03a644930

关于该主题的帖子中有人举例说明了如何做到这一点.他们使用了一个字节数组,在这个数组中,他们将调用IInputstream.ReadAsync方法获得的数据放入其中.我遇到的问题是,在我调用该方法之后,字节数组充满了0,我认为不行.谁能帮我这个?

cmi*_*nch 17

您可以使用ms-appx-web:///协议来切换上下文,而不是ms-appx:///在HTML/JS Metro风格应用程序中成功加载本地Html文件以及关联的CSS和JavaScript.

我没有在XAML Metro Style App中尝试这个,但相信ms-appx-web:///可以使用该协议.限制是你的Html(如果是本地的,即不是web托管的)必须驻留 WinRT包中,在你的情况下它就是/ Assets.

  • 如果html文件在WinRT包的"外部"怎么办?假设在"Windows.Storage.ApplicationData.Current.LocalFolder"中 (4认同)

Mar*_*gne 8

我遇到了同样的问题.在我的应用程序中,我有一个名为Default.html的文件,它被读取,它的内容显示在WebView控件中.

var html = await Windows.Storage.PathIO.ReadTextAsync("ms-appx:///Assets/Default.html");
MyWebView.NavigateToString(html);
Run Code Online (Sandbox Code Playgroud)

请注意,我正在使用await并且ReadTextAsync代码是异步的(就像在执行IO时那样),你放置它的函数必须被定义为async,例如:

private async void LoadWebView( file ) { ... }
Run Code Online (Sandbox Code Playgroud)