Sposób NavigateToString nie działa ze znacznikami, które wskazują na obrazy w folderze LocalData. (o ile w ogóle pamiętam). W rzeczywistości NavigateToString również łamie linki JavaScript i CSS.
Obrazy na serwerze
jedno rozwiązanie, aby zmienić swoje źródło wskazywać na serwerze sieciowym zamiast localdata. Nie jestem pewien, czy to działa w twoim scenariuszu aplikacji.
obrazy i HTML jak zawartość
Drugim wyborem jest dodanie kodu HTML i plików graficznych jako zawartość do aplikacji i korzystać
WebView1.Navigate(new Uri("ms-appx-web:///assets/SampleHtmlPage.html"));
załadować HTML.
w Procesie HTTP Server
Oto rozwiązanie, które wykorzystuje serwer HTTP niestandardowego w aplikacji do obsługi zagadnień.
Loading Local HTML Content in Metro WebView (Windows 8)
bazowa 64 zakodowany obraz
Wreszcie nie ma innego rozwiązania pomocą Base64 kodowanie obrazów w folderze LocalData.
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);
}
To ostatnie podejście działa dla zdjęć, ale nie dla plików CSS.
Czy ładujesz plik HTML do elementu WebView? –
Czy używasz metod WebView.Navigate lub WebView.NavigateTo do załadowania strony HTML? –
Publiczna aktualizacja asynchronicznej statycznej asynchronizacji (Webview webview, plik IStorageFile) { var html = czeka na Windows.Storage.PathIO.ReadTextAsync (file.Path); webview.NavigateToString (html); } –