2 Stimmen

Silverlight WebBrowser - Lokale Datei öffnen?

Unsere Silverlight-Anwendung muss dem Benutzer Vorschauen von dynamisch generierten HTML-Seiten anzeigen, daher möchten wir den WebBrowser (oder etwas Ähnliches wie Telerik's RadHtmlPlaceholder) verwenden, um diese Seiten anzuzeigen. Das Problem ist, dass das HTML Links zu anderen lokalen Dateien wie Bildern, Flash-Objekten, CSS- und Javascript-Dateien enthält. Das CSS und das Javascript könnten inline im HTML platziert werden, aber ich habe keine Möglichkeit gefunden, Bilder einzubetten. Etwas Einfaches wie dies funktioniert einfach nicht:

Das Erstellen der HTML-Datei und der Bilddatei im isolierten Speicher ist machbar, aber ich kann den Pfad zur erstellten HTML-Datei nicht an WebBrowser.Navigate(uri) weitergeben.

Das Lesen des Inhalts der HTML-Datei und das Aufrufen von WebBrowser.NavigateToString(string) zeigt die Seite, aber nicht die verknüpften Bilder oder Skripte.

Das Verlinken auf Online-Quellen ist keine Option, da die Anwendung offline (d.h. außerhalb des Browsers) funktionieren muss und die Leistung wesentlich besser wäre, wenn die Bilder und Flash-Objekte lokal zwischengespeichert würden.

Gibt es also eine Möglichkeit in Silverlight, im WebBrowser-Steuerelement eine lokale HTML-Datei anzuzeigen, die ein Bild aus dem lokalen Dateisystem enthält, oder ist das unmöglich?

Danke, James

0voto

Jordan Punkte 403

Die in OOB integrierten System.IO-Funktionen lesen und schreiben nur in die lokalen Dokumentverzeichnisse. Solange sich alles dort befindet, können Sie das mit erhöhtem Vertrauen verwenden. Ansonsten ist die Verwendung von registrierten COM-Objekten mit AutomationFactory der einzige andere Weg, um auf Dateien im gesamten System zuzugreifen. file://C:/Pfad zur Datei.html ist der URI, um eine Datei aus dem lokalen Dateisystem anzuzeigen.

0 Stimmen

Danke Jordan, aber das Öffnen einer lokalen HTML-Datei funktioniert immer noch nicht. Beispielsweise wirft dies die Ausnahme System.UnauthorizedAccessException aus:

OpenFileDialog openFileDialog1 = new OpenFileDialog(); if (openFileDialog1.ShowDialog() == true) {  string path = "file:///" + openFileDialog1.File.FullName.ToString().Replace('\\', '/').Replace(" ", "%20");     MessageBox.Show(path);  MyWebBrowser2.Source = new Uri(path, UriKind.Absolute); } 

Die Verwendung von COM ist keine Option, da ich dies innerhalb der Silverlight-Anwendung behalten und auf OS X arbeiten möchte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X