的NavigateToString方法不具有指向在LocalData文件夾的圖像標籤的工作。 (據我所知,無論如何)。事實上,NavigateToString也會打破JavaScript和CSS鏈接。服務器上
圖片
一個解決辦法,就是改變你的源指向一個網絡服務器,而不是localdata。但我不確定它是否適用於您的應用場景。
圖像和HTML作爲內容
第二個選擇是你的HTML文件和圖像文件作爲內容添加到您的應用,並使用
WebView1.Navigate(new Uri("ms-appx-web:///assets/SampleHtmlPage.html"));
加載HTML。
在處理HTTP服務器
下面是一個使用自定義HTTP服務器的應用程序來處理這些問題的解決方案。
Loading Local HTML Content in Metro WebView (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文件。
您是否將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); } –