È possibile utilizzare i controlli dei moduli WPF e Windows in un'unica applicazione? Quanto è difficile o pratica un'idea questa?WPF e WinForm possono essere mescolati all'interno di un'applicazione?
risposta
Credo che ci sia un controllo WindowsFormsHost si può mettere in tue applicazioni WPF che farà interoperabilità torna a codice WinForms:
È possibile anche utilizzare un HWNDSource e HWNDHost controlli per incorporare controlli WPF in una app WinForms (o qualsiasi Win32, davvero).
Abbiamo ospitato controlli WPF significativamente complessi in un'app esistente WinForms LOB. Può essere fatto, ma abbiamo avuto problemi (alcuni senza dubbio causati dalla curva di apprendimento ripida). Questi hanno principalmente a che fare con eventi di perdita di messa a fuoco non attivati quando previsto, e anche problemi di navigazione della tastiera.
Sì, è possibile, sia Windows Form all'interno di un'applicazione WPF, sia controlli WPF in Windows Form. L'applicazione di mappatura mentale di www.novamind.com è un mix riuscito delle due tecnologie.
Quando si ospita contenuto non WPF (sia esso HTML, WinForms o contenuto Win32), si avranno problemi Airspace. Ciò significa che non è possibile compostare completamente il contenuto WPF con il contenuto ospitato. Inoltre, non è possibile animarlo ecc. Ci sono anche alcuni problemi interessanti riguardo agli scrollviewer see here for more details and a fix.
È abbastanza semplice ospitare i controlli WPF in un'app WinForms con un adattatore ElementHost
o controlli WinForm in un'app WPF con un adattatore WindowsFormsHost
. Non ci sono troppe risorse sul web che mostrano come fare uno di questi, comunque. Nel processo di apprendimento su come fare questo per me stesso ho scoperto rapidamente le simmetrie intrinseche tra i due percorsi. Ho distillato tutte le mie note in un articolo confrontando e contrapponendo queste simmetrie usando un approccio unico: l'articolo è in realtà due articoli affiancati, confrontando ogni passaggio in dettaglio, a partire dalla creazione di un controllo utente in una tecnologia per ospitarla in un applicazione nella tecnologia "opposta". Il mio articolo, pubblicato su SimpleTalk.com nell'agosto 2010, è disponibile qui: Mixing WPF and WinForms.
Per completezza, ecco un paio di buoni riferimenti MSDN, uno per ogni percorso. In realtà, la soluzione demo che accompagna il mio articolo ha iniziato da entrambi questi:
- 1. Differenza tra winform, WPF e metro?
- 2. C# Trasparenza WPF su controlli Winform
- 3. Hosting di controlli WPF in Winform
- 4. EF7 e GroupBy() non possono essere tradotti
- 5. non possono essere 'virtuali'
- 6. IDataErrorInfo in winform
- 7. apertura della finestra di controllo utente WPF winform restringe finestra padre winform
- 8. Finestra di dialogo Winform con finestra WPF come genitore
- 9. C#/winform: come possono due dinamicamente condividere lo spazio disponibile?
- 10. vals Scala possono essere modificati
- 11. C# Generics e Winform
- 12. Le funzioni di Haskell possono essere serializzate?
- 13. Le chiamate di funzione possono essere riordinate
- 14. I puntatori possono essere di dimensioni diverse?
- 15. Vantaggio dell'app WPF vs Winform per le app aziendali?
- 16. Xcode 7: -weak_library e -bitcode_bundle non possono essere utilizzati insieme
- 17. Le query compilate e "I parametri non possono essere sequenze"
- 18. Perché TimeSpan e Guid Structs possono essere confrontati con null?
- 19. Dati primari JPA e parametri che possono essere nulli
- 20. DrawerLayout e ActionBarDrawerToggle non possono essere risolti a un tipo
- 21. Quali classi e funzioni C# possono essere utilizzati nel rasoio?
- 22. WPF Popup e WindowsFormsHost Problem
- 23. Perché Ellipsis e NotImplemented non possono essere decapitati?
- 24. MPI sendbuf e recvbuf possono essere la stessa cosa?
- 25. ld: -bundle e -bitcode_bundle non possono essere utilizzati insieme
- 26. Gestione delle eccezioni non gestite dai componenti Winform in WPF
- 27. i getters possono essere usati in uguali e hashcode?
- 28. Le eccezioni possono essere nascoste tra ripristino e maschera?
- 29. Come posso aggiungere questo controllo WPF al mio WinForm?
- 30. Le tabelle logiche inserted e deleted non possono essere aggiornati
La miscelazione WPF e WinForms articolo è un grande esempio. Una spiegazione molto chiara e ben illustrata, assolutamente da leggere per chiunque stia considerando questa attività. Grazie! – RAM