4 Stimmen

Was ist eine gute Alternative zum WPF WebBrowser Control?

Ich habe eine MDI WPF-Anwendung, die ich brauche, um Web-Inhalte hinzuzufügen. Auf den ersten, groß es sieht aus wie ich 2 Optionen in den Rahmen die gebaut haben Rahmen Kontrolle und die WebBrowser Kontrolle. Da es sich um eine MDI Es dauert nicht lange, bis man feststellt, dass beides nicht funktioniert.

Das WPF WebBrowser-Steuerelement verpackt die IE WebBrowser ActiveX-Steuerelement das die Win32-Grafikpipeline verwendet. Die " Luftraum "Die Frage "Sorry, die Layouts passen nicht zusammen" fasst dies ziemlich genau zusammen.

Ja, ich habe darüber nachgedacht, Schnappschüsse des Webinhalts zu machen und diese zu rendern und die Maus- und Tastaturereignisse wieder dem Browser-Steuerelement zuzuordnen, aber ich kann mir die Leistungseinbußen nicht leisten und ich habe wirklich keine Zeit, das zu schreiben und gründlich zu testen.

Ich habe nach Steuerelementen von Drittanbietern gesucht, aber bisher habe ich nur folgende gefunden Chris Cavanagh's WPF Chromium-Webbrowser Kontrolle. Zum Abschluss Awesomium 1.5 . Zusammen sind diese sehr cool, sie spielen schön mit den WPF-Layouts. Aber sie erfüllen nicht meine Leistungsanforderungen. Sie sind SEHR SCHWER auf den Speicherverbrauch und nicht zu freundlich mit CPU-Nutzung entweder. Ganz zu schweigen davon, dass sie noch ziemlich fehlerhaft sind. Ich werde näher darauf eingehen, wenn Sie interessiert sind.

Kennt jemand von Ihnen ein stabiles, leistungsfähiges WPF Webbrowser-Kontrolle?

Merci.

4voto

ChrisW Punkte 53239

Ich glaube nicht, dass es viele vollständig verwaltete Webkontrollen gibt. Es gibt ein ungewöhnliches unter http://www.modeltext.com/html/ (Ich bin sein Autor).

Dies ist ein Windows Forms-Steuerelement, nicht WPF. Die Windows Forms - WPF Interoperabilität FAQ legt nahe, dass das kein Problem ist; aber ich weiß nicht, ob das "Luftraumproblem" die Verwendung eines Windows Forms-Steuerelements ausschließt.

Ein Pluspunkt:

  • Vollständig verwaltet
  • Performant: mindestens geringe CPU-Leistung (ich weiß nicht, wie hoch Ihr Speicherbedarf ist)
  • Kann mehr als eine Instanz in einer Anwendung haben

Die Kehrseite der Medaille:

  • Nur eine Teilmenge der Funktionen, die ein gängiger Browser unterstützen würde (es kommt also darauf an, wofür Sie ihn brauchen)
  • Beta-Qualität

Editar:

Sieht nach guter Arbeit aus.

Ich danke Ihnen.

Für diese Anwendung benötige ich einen voll funktionsfähigen Browser (ich muss Javascript unterstützen).

In diesem Fall würde dies nicht für Sie arbeiten: dieses Steuerelement stellt .NET (nicht javascript) DOM-APIs; so können Anwendungen implementieren und installieren DOM-Ereignishandler, die in C# statt in javascript geschrieben sind.

Und ja, Hosting das Steuerelement in einer WPF-App wird gut funktionieren, bis Sie Ihre Objekte Schicht benötigen. Alle Winforms-Steuerelemente werden von diesem Problem aufgrund der Rendering-Pipelines leiden. Siehe den Link oben. Haben Sie eine native WPF-Portierung in Betracht gezogen?

Eine WPF-Portierung könnte möglich sein, weil es auf/über eine abstrakte Gerät-Kontext-ähnliche Schnittstelle rendert, von denen ich zwei vollständige/unterschiedliche Implementierungen so weit haben:

  • Man verwendet System.Windows.Forms y System.Drawing
  • Das andere ist mein automatisiertes Test-Framework, das das "humble dialog"-Muster für GUI-Regressionstests implementiert

Theoretisch könnte ich vielleicht eine dritte implementieren, für WPF, mit System.Windows.Controls y System.Windows.Media .

Das ist zwar eher zufällig, aber es könnte Sie interessieren: http://blog.spencen.com/2008/01/19/html-to-flowdocument-converter.aspx

Ich danke Ihnen dafür: Ich finde das sehr interessant. Die WPF RichTextBox bietet eine Menge Funktionalität für die Bearbeitung.

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