Question

J'ai une application WinForms existante pour laquelle je conçois maintenant de nouveaux bits dans WPF. Les choses se passent plutôt bien et je me suis d'abord heurté à un besoin de dialogue.

Je voudrais faire le dialogue dans WPF. Il semble que je devrais créer un contrôle UserControl pour le contenu réel, puis l'héberger via un formulaire WinForms avec un ElementHost (car UserControl n'a pas de méthode ShowDialog ()).

Et c'est là que se trouve ma question. Comment ça marche? Le mieux que je puisse dire, c'est que WPF UserControl n'a même pas de propriété DialogResult (ce qui est logique étant donné qu'il n'a pas de méthode ShowDialog ()) - il me semble que j'aurais besoin d'un contrôle de fenêtre WPF - et je n'en ai pas pense que je peux l'utiliser dans ce cas.

Lutte avec le flux de base et la configuration des choses ici. Quelqu'un peut-il briller une lumière?

Est-ce même possible?

Était-ce utile?

La solution

Vous pouvez ouvrir une fenêtre WPF à partir d'une application WinForms.

Créez simplement la fenêtre et appelez ShowDialog () . Le CLR chargera le cadre WPF et ouvrira la fenêtre.

Autres conseils

Si vous souhaitez que votre application Interop fonctionne principalement comme une application WinForms, l'approche que vous décrivez fonctionne parfaitement: j'ai à peu près la même chose dans mes cas d'interopérabilité.

WPF prend en charge les MessageBoxes (bien qu’une version légèrement différente de celle de WinForms) et vous pouvez assembler quelque chose à l’aide de WPF Windows (en l’extensifiant en ajoutant quelque chose de similaire à DialogResult). Cependant, les contrôles WPF fournis suggèrent qu’ils essaient de modifier les interactions UX pour minimiser les dialogues, en particulier modaux.

Pour vous simplifier la vie, je créerais une sous-classe WinForms Form / ElementHost spécifiquement conçue pour traiter du contenu WPF avec hébergement et en fonction de la propreté de votre " utilisation de " Déclarations, encapsulant votre propre énumération de type DialogResult afin que vous n'ayez pas à inclure l'espace de noms System.Windows.Forms, ce qui peut alourdir la complexité de votre code WPF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top