J'ai besoin d'un contrôle WebBrowser intégré dans ma demande et j'ai des problèmes d'affichage du contenu WPF en plus de celui-ci. L'application affichera parfois des contextuels pour éditer des données ou pour afficher des erreurs, et le WebBrowser est tiré sur le dessus des popups car il s'agit d'un contrôle WinForms. P>
L'alternative que j'ai examiné Ici utilise un contrôle contextuel pour mettre des articles sur le contrôle WebBrowser, mais mon problème avec les popups est-il ouvert lorsque vous passez à une autre application, et ils ne bougent pas avec votre application lorsque l'utilisateur redimensionne / déplace le app. p>
Y a-t-il une solution alternative que je puisse faire cela? Le contenu Web intégré est des pages ASPX et donc pas Statique HTML. P>
6 Réponses :
Vous pouvez utiliser Adorner pour y parvenir. http://msdn.microsoft.com/en-us/library/ms753340.aspx p>
L'Adornerlayer semble toujours être rendu sous la couche WinForms, où le contrôle WPF WebBrowser est rendu.
Une façon de contourner les problèmes d'espace aérien consiste à créer une nouvelle fenêtre sans cadre et en le positionnant sur le contrôle WebBrowser. Le problème principal de celui-ci est de le maintenir correctement lorsque la fenêtre principale est déplacée / redimensionnée / etc. p>
the WPF 4.0 Chrome WebBrowser Project est une alternative au contrôle WebBrowser intégré qui devrait faire ce dont vous avez besoin. . P>
J'ai essayé cela mais ne peut pas sembler le faire compiler sur ma machine.
WebBrowersers embarqués sucer, malheureusement. Si vous affichez Si vous affichez du contenu statique (ou du contenu d'une source que vous pouvez contrôler ou influencer), vous pourriez envisager d'afficher, disons, Documents RTF dans un document de documentation à la place, qui ne dispose pas des problèmes d'espace aérien icky du WebBrowser. Contrôle. P>
Malheureusement, mon contenu Web est dynamique
Marquant cela la réponse depuis qu'il explique le mieux le problème. Ce que j'ai réellement fait était de créer un style global pour les contrôles WebBrowser qui les cache lorsqu'une popup est visible. Si j'ai besoin du contenu Web pour être utilisable pendant que la popup est ouverte, je verrai sur la mise en œuvre d'une 2e fenêtre et de gérer le problème du redimensionnement / de déplacement, mais pour le moment, cela convient à mes besoins.
Une autre méthodologie que j'ai eu un certain succès avec était de jouer avec des régions de découpage à des trous essentiellement coupés dans la commande ActiveX qui est essentiellement hébergée dans ces contrôles WEBBrowser Wrapper. Si j'ai le temps, je vais écrire une démonstration de ce que j'ai trouvé et j'essayer d'inclure un exemple, mais je voulais juste partager cela au cas où quelqu'un a plus de temps à regarder et à me battre au coup de poing. P >
La solution de contournement que vous pourriez faire est de faire la hauteur du contrôle du navigateur Web à zéro, lorsque un autre contrôle est entré en face de la commande de navigateur Web.
correction: le correctif standard est que vous pouvez définir la hauteur du web. Navigateur à zéro lorsque vous déclenchez un autre contrôle sur cela dépend de votre scénario. Ci-dessous, il y a un exemple de mise en œuvre. P>
dans MAINWINDOW.XAML Inclure les événements. P>
private void Window_Activated(object sender, EventArgs e) { wb.Height = double.NaN; } private void Window_Deactivated(object sender, EventArgs e) { wb.Height = 0; }