Pregunta

Tengo una aplicación WinForms existente para la cual ahora estoy diseñando nuevos bits en WPF. Las cosas van bastante bien y me he topado con mi primera necesidad de un diálogo.

Me gustaría hacer el diálogo en WPF. Parece que voy a necesitar hacer un UserControl para el contenido real y luego alojar ese contenido a través de un formulario WinForms con un ElementHost (ya que UserControl no tiene el método ShowDialog ()).

Y ahí es donde está mi pregunta. ¿Cómo funciona? Lo mejor que puedo decir es que el WPF UserControl ni siquiera tiene una propiedad DialogResult (lo cual tiene sentido dado que no tiene el método ShowDialog ()). Me parece que necesitaría un control WPF Window, y no creo que puedo usar eso en este caso.

Luchando con el flujo básico y la configuración de las cosas aquí. ¿Alguien puede encender una luz?

¿Es esto posible?

¿Fue útil?

Solución

Puedes abrir una ventana WPF desde una aplicación de WinForms.

Simplemente cree la ventana y llame a ShowDialog () . El CLR cargará el marco WPF y abrirá la ventana.

Otros consejos

Si desea que su aplicación de interoperabilidad funcione principalmente como una aplicación de WinForms, entonces el enfoque que describe funciona bien: tengo más o menos lo mismo en mis casos de interoperabilidad.

WPF soporta MessageBoxes (aunque una versión ligeramente diferente a WinForms), y podría armar algo usando WPF Windows (extendiéndolo agregando algo similar a DialogResult). Sin embargo, los controles WPF provistos sugieren que están intentando cambiar las interacciones de UX para minimizar los diálogos, particularmente los modales.

Sin embargo, para facilitarle la vida, crearía una subclase WinForms Form / ElementHost específicamente para tratar con / hospedar contenido WPF y dependiendo de qué tan limpio le guste su " utilizando " declaraciones, ajustando su propia enumeración tipo DialogResult para que no tenga que incluir el espacio de nombres System.Windows.Forms que puede hacer que sus códigos WPF sean más engorrosos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top