のlocalDataフォルダ内の画像を指すタグでは動作しませんNavigateToString方法。 (私がとにかく思い出す限り)。実際、NavigateToStringはJavaScriptとCSSのリンクも解除します。サーバー上の
画像
一つの解決策は、ネットワーク・サーバの代わりのlocalDataを指すようにソースを変更することです。私はそれがあなたのアプリのシナリオではうまくいくかどうかはわかりません。コンテンツとして
画像やHTML
2番目の選択肢は、あなたのアプリにコンテンツとしてあなたのhtmlや画像ファイルを追加し、HTMLをロードするために
WebView1.Navigate(new Uri("ms-appx-web:///assets/SampleHtmlPage.html"));
を使用することです。
プロセスHTTPサーバで
ここで問題を処理するために、アプリでカスタムHTTPサーバを使用するソリューションです。
Loading Local HTML Content in Metro WebView (Windows 8)
ベース64符号化された画像
最後のlocalDataフォルダに画像のBase64エンコードを使用して、別の解決策があります。
internal async void MakeHtmlString()
{
StorageFile imageFile; // get image file here.
var html =
string.Format("<div><img src='data:image/png;base64,{0}'",
await GetImageBase64(imageFile));
}
internal async Task<string> GetImageBase64(StorageFile imageFile)
{
var imageStream = await imageFile.OpenAsync(FileAccessMode.Read);
var inputStream = imageStream.GetInputStreamAt(0);
var dataReader = new DataReader(inputStream);
var dataResults = await dataReader.LoadAsync((uint)imageStream.Size);
var bytes = new byte[dataResults];
dataReader.ReadBytes(bytes);
return Convert.ToBase64String(bytes);
}
この最後のアプローチは、イメージでは機能しますが、CSSファイルでは機能しません。
HTMLファイルをWebView要素にロードしていますか? –
WebView.NavigateまたはWebView.NavigateToメソッドを使用してHTMLページをロードしていますか? –
public static asyncタスクの更新(WebView Webview、IStorageFileファイル) { var html = await Windows.Storage.PathIO.ReadTextAsync(file.Path); webview.NavigateToString(html); } –