Domanda

Ho un'applicazione WinForms esistente per la quale sto progettando nuovi bit in WPF. Le cose stanno andando ragionevolmente bene e ho incontrato il mio primo bisogno di un dialogo.

Mi piacerebbe fare la finestra di dialogo in WPF. Sembra che avrò bisogno di fare un UserControl per il contenuto effettivo e quindi ospitare quel contenuto tramite un modulo WinForms con un ElementHost (poiché UserControl non ha un metodo ShowDialog ()).

Ed è qui che si trova la mia domanda. Come funziona? Il migliore che posso dire, WPF UserControl non ha nemmeno una proprietà DialogResult (il che ha senso dato che non ha il metodo ShowDialog ()) - mi sembra che avrei bisogno di un controllo WPF Window - e non penso di poterlo usare in questo caso.

Lottando con il flusso di base e l'impostazione delle cose qui. Qualcuno può illuminare una luce?

È anche possibile?

È stato utile?

Soluzione

È possibile aprire una finestra WPF da un'applicazione WinForms.

Basta creare la finestra e chiamare ShowDialog () . Il CLR caricherà il framework WPF e aprirà la finestra.

Altri suggerimenti

Se vuoi che la tua applicazione di interoperabilità funzioni per lo più come un'app di WinForms, l'approccio che descrivi funziona bene - ho praticamente la stessa cosa nei miei casi di interoperabilità.

WPF supporta MessageBox (anche se una versione leggermente diversa da WinForms), e potresti mettere insieme qualcosa usando WPF Windows (estendendolo aggiungendo qualcosa di simile a DialogResult). Tuttavia, i controlli WPF forniti suggeriscono che stanno cercando di modificare le interazioni UX per ridurre al minimo le finestre di dialogo, in particolare quelle modali.

Per semplificarti la vita, però, creerei una sottoclasse WinForms Form / ElementHost specificatamente per la gestione di contenuti WPF e in base alla pulizia con cui ti piace " usando " dichiarazioni, racchiudendo la tua enumerazione simile a DialogResult in modo da non dover includere lo spazio dei nomi System.Windows.Forms che può rendere più ingombrante il tuo codice WPF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top