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

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

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

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

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

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

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

请注意,我正在使用awaitReadTextAsync以便代码是异步的(就像在执行IO时那样),您放置它的函数必须定义为async,例如:

 private async void LoadWebView( file ) { ... } 

这是一个快速示例,告诉我这是否有助于您:

我在我的Assets文件夹中有一个名为MyHTMLPage的Html文件,它有一个类型为content的构建操作和一个Copy to Output to Always Always。 我的Html文件:

        
HELLO WORLD, from a webview

在我的主页面上:

     

在我的主页面上:

  public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); Loaded += MainPage_Loaded; } private void MainPage_Loaded(object sender, RoutedEventArgs e) { string src = "ms-appx-web:///Assets/MyHTMLPage.html"; this.MyWebView.Navigate(new Uri(src)); } } 

和Voila这应该工作。