2010-05-29 6 views
4

J'ai une application WPF MDI à laquelle j'ai besoin d'ajouter du contenu Web. Au début, il semble que j'ai deux options intégrées dans le cadre: le contrôle Frame et le contrôle WebBrowser. Étant donné qu'il s'agit d'une application MDI, il ne faut pas longtemps pour découvrir que ni l'un ni l'autre ne fonctionnera.Quelle est une bonne alternative au contrôle WPF WebBrowser?

Le contrôle WPF WebBrowser encapsule le IE WebBrowser ActiveX Control qui utilise le pipeline graphique Win32. Le numéro "Airspace" résume à peu près ceci: "Désolé, les mises en page ne seront pas sympa ensemble".

Oui, je l'ai pensé à prendre des photos du contenu web rendant ces derniers et la cartographie des événements de la souris et du clavier retour au contrôle du navigateur, mais je ne peux pas se permettre la pénalité de performance et je ne vois vraiment pas le temps d'écrire et de bien le tester.

J'ai cherché des contrôles tiers, mais jusqu'à présent je n'ai trouvé Chris Cavanagh'sWPF Chromium Web Browser contrôle. Ce qui termine Awesomium 1.5. Ensemble, ils sont très cool, ils jouent bien avec les mises en page WPF. Mais ils ne répondent pas à mes exigences de performance. Ils sont TRÈS LOURDS sur la consommation de mémoire et non pas amical avec l'utilisation du processeur non plus. Pour ne pas mentionner encore tout à fait buggy. Je vais élaborer si vous êtes intéressé.

Alors, faites l'une d'entre vous connaissez un stable performant WPF contrôle du navigateur web?

Merci.

Répondre

4

Je ne pense pas qu'il y ait beaucoup de contrôles Web entièrement gérés. Il y en a un inhabituel au http://www.modeltext.com/html/ (j'en suis l'auteur).

Ceci est un contrôle Windows Forms, pas WPF. Le Windows Forms – WPF Interoperability FAQ suggère que ce n'est pas un problème; mais je ne sais pas si le "problème d'espace aérien" empêche l'utilisation d'un contrôle Windows Forms.

Du côté plus:

  • entièrement géré
  • Performant: faible CPU au moins (je ne sais pas ce que vos besoins en mémoire sont)
  • peut avoir plus d'un cas de celui-ci en une application

du côté moins:

  • Seul un sous-ensemble des fonctionnalités qui seraient pris en charge par un navigateur grand public (donc, il dépend ce que vous voulez pour)
  • Beta qualité

Edit:

On dirait un beau travail.

Merci.

Pour cette application, j'ai besoin d'un navigateur entièrement fonctionnel (je dois supporter javascript). Dans ce cas, cela ne fonctionnerait pas pour vous: ce contrôle expose les API DOM .NET (pas javascript); Ainsi, les applications peuvent implémenter et installer des gestionnaires d'événements DOM, qui sont écrits en C# et non en javascript. Oui, héberger le contrôle dans une application WPF fonctionnera bien jusqu'à ce que vous ayez besoin de superposer vos objets. Tous les contrôles winforms souffriront de ce problème en raison des pipelines de rendu. Voir le lien ci-dessus. Avez-vous considéré un port WPF natif?

Un port WPF peut-être possible, car il rend sur/via une interface périphérique contexte comme abstrait, dont j'ai deux implémentations complètes/distinctes à ce jour:

  • On utilise System.Windows.Forms et System.Drawing
  • l'autre est mon cadre de test automatisé, qui met en œuvre le modèle « dialogue humble » pour les tests de régression GUI

en théorie peut-être Je pourrais mettre en œuvre un tiers, pour WPF, en utilisant System.Windows.Controls et System.Windows.Media.

sorte de hasard, mais vous pourriez trouver cela intéressant: http://blog.spencen.com/2008/01/19/html-to-flowdocument-converter.aspx

Merci pour cela: je trouve cela intéressant. Le RichTextBox WPF fournit beaucoup de fonctionnalités pour l'édition.

+0

On dirait du beau travail. Pour cette application, j'ai besoin d'un navigateur entièrement fonctionnel (je dois supporter javascript). Et oui, l'hébergement du contrôle dans une application WPF fonctionnera bien jusqu'à ce que vous ayez besoin de superposer vos objets. Tous les contrôles winforms souffriront de ce problème en raison des pipelines de rendu. Voir le lien ci-dessus. Avez-vous considéré un port WPF natif? Type de hasard, mais vous pourriez trouver cela intéressant: http://blog.spencen.com/2008/01/19/html-to-flowdocument-converter.aspx – VoidDweller

+0

beau travail. Merci –

Questions connexes