10

メトロスタイルアプリのWebViewコントロールにhtmlファイルを読み込むのに少し問題があります。インターネットを検索していて、NavigateToメソッドでローカルのhtmlファイルをロードできないことがわかりました。また、コントロールのNavigateToStringメソッドを使用できる回避策があることもわかりました。以下は私がこれを見たリンクです: http ://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/9cd8614d-2dc8-48ac-9cd9-57b03a644930

そのトピックに関する投稿の誰かが、これを行う方法の例を示しました。彼らは、IInputstream.ReadAsyncメソッドの呼び出しから取得したデータを配置するバイト配列を使用しました。私が遭遇した問題は、そのメソッドを呼び出した後、バイト配列が0でいっぱいになることです。これは、問題ないと思います。誰かがこれを手伝ってくれますか?

4

3 に答える 3

17

ms-appx-web:///の代わりにプロトコルを使用してコンテキストを切り替えることができます。これによりms-appx:///、HTML/JS Metro スタイル アプリ内で、ローカルの Html ファイルと関連する CSS および JavaScript を正常に読み込むことができました。

XAML Metro スタイル アプリでこれを試したことはありませんが、ms-appx-web:///プロトコルは使用できると思います。制限は、Html (ローカルの場合、つまり Web でホストされていない場合) がWinRT パッケージに存在する必要があることです。これは、ケースでは /Assets に表示されます。

于 2012-06-28T08:59:01.327 に答える
8

私は同じ問題に遭遇しました。私のアプリケーションには、Default.html というファイルがあり、それが読み取られ、その内容が WebView コントロールに表示されます。

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

awaitコードが非同期になるようにandを使用していることに注意してくださいReadTextAsync(IO を実行するときのように)。これを切り取って配置する関数は、非同期として定義する必要があります。例:

private async void LoadWebView( file ) { ... }
于 2012-06-04T01:10:43.310 に答える
4

これがあなたに役立つかどうかを教えてくれる簡単なサンプルです:

Assets フォルダーに MyHTMLPage という Html ファイルがあり、コンテンツ タイプのビルド アクションと、Copy to Output から Copy Always があります。私のHTMLファイル:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
<div style="background-color: chartreuse">HELLO WORLD, from a webview</div>  
</body>
</html>

私のメインPage.xamlで:

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <WebView x:Name="MyWebView"  Width="200" Height="300"></WebView>
    </Grid>

私のメインPage.csで:

 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));
        }
    }

これでうまくいくはずです。

于 2016-04-25T23:27:18.937 に答える