NavigateToString メソッドは、LocalData フォルダー内の画像を指すタグでは機能しません。(とにかく覚えている限り)。実際、NavigateToString は JavaScript と CSS のリンクも壊します。
サーバー上の画像
1 つの解決策は、ローカルデータではなくネットワーク サーバーを指すようにソースを変更することです。ただし、アプリのシナリオでうまくいくかどうかはわかりません。
コンテンツとしての画像と HTML
2 番目の選択肢は、html ファイルと画像ファイルをコンテンツとしてアプリに追加して使用することです。
WebView1.Navigate(new Uri("ms-appx-web:///assets/SampleHtmlPage.html"));
HTML をロードします。
インプロセス HTTP サーバー
アプリでカスタム HTTP サーバーを使用して問題を処理するソリューションを次に示します。
Metro WebView でのローカル HTML コンテンツの読み込み (Windows 8)
Base 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 ファイルに対しては機能しません。