Interoperatività di WPF e Windows Form
WPF e Windows Forms presentano due architetture diverse per la creazione delle interfacce delle applicazioni. Lo spazio dei nomi System.Windows.Forms.Integration fornisce classi che consentono scenari di interazione comuni. Le due classi principali che implementano le capacità di interoperatività sono WindowsFormsHost e ElementHost. In questo argomento vengono descritti gli scenari di interazione supportati e non.
Nota |
---|
Una considerazione particolare viene data allo scenario di controllo ibrido.Un controllo ibrido dispone di un controllo di una tecnologia annidato in un controllo di un'altra tecnologia.Ciò è anche definito interazione annidata.Un controllo ibrido multilivello dispone di più di un livello di annidamento dei controlli ibridi.Un esempio di interazione annidata a più livelli è un controllo Windows Forms che contiene un controllo WPF, che contiene un altro controllo Windows Forms.I controlli ibridi multilivello non sono supportati: |
Nel presente argomento sono contenute le seguenti sezioni.
- Hosting di controlli Windows Form in WPF
- Hosting di controlli WPF in Windows Form
- Argomenti correlati
Hosting di controlli Windows Form in WPF
Sono supportati i seguenti scenari di interoperatività quando un controllo WPF ospita un controllo Windows Forms:
Il controllo WPF potrebbe ospitare uno o più controlli Windows Forms mediante XAML.
Potrebbe ospitare uno o più controlli Windows Forms utilizzando il codice.
Potrebbe ospitare i controlli contenitore Windows Forms che contengono altri controlli Windows Forms.
Potrebbe ospitare un form Master-Details con un master WPF e dettagli Windows Forms.
Potrebbe ospitare un form Master-Details con un master Windows Forms e dettagli WPF.
Potrebbe ospitare uno o più controlli ActiveX.
Potrebbe ospitare uno o più controlli composti.
Potrebbe ospitare controlli ibridi mediante Extensible Application Markup Language (XAML).
Potrebbe ospitare controlli ibridi mediante il codice.
Supporto layout
Nell'elenco riportato di seguito vengono descritte le limitazioni note quando l'elemento WindowsFormsHost tenta di integrare il controllo Windows Forms ospitato nel sistema di layout di WPF.
In alcuni casi non è possibile ridimensionare i controlli Windows Forms oppure è possibile ridimensionarli solo in base a dimensioni specifiche. Ad esempio, un controllo Windows Forms ComboBox supporta una sola altezza definita dalla dimensione del carattere del controllo. In un layout dinamico di WPF in cui si suppone che sia possibile estendere gli elementi in verticale, un controllo ComboBox ospitato non verrà esteso nel modo previsto.
Non è possibile ruotare o inclinare i controlli Windows Forms. Ad esempio, quando si ruota l'interfaccia utente di 90 gradi, i controlli Windows Forms ospitati manterranno la posizione verticale.
Nella maggior parte dei casi i controlli Windows Forms non supportano il ridimensionamento proporzionale. Anche se le dimensioni complessive del controllo vengono ridimensionate, i controlli figlio e gli elementi componente del controllo non possono essere ridimensionati nel modo previsto. Questa limitazione dipende dalla modalità in cui ogni controllo Windows Forms supporta il ridimensionamento.
In un'interfaccia utente di WPF è possibile modificare l'ordine Z degli elementi per controllare il comportamento di sovrapposizione. Un controllo Windows Forms ospitato viene tracciato in un elemento HWND separato, in modo che venga disegnato sempre sopra elementi WPF.
I controlli Windows Forms supportano il ridimensionamento automatico in base alla dimensione del carattere. In un'interfaccia utente di WPF la modifica della dimensione del carattere non causa il ridimensionamento dell'intero layout, benché sia possibile che vengano ridimensionati singoli elementi.
Proprietà di ambiente
Alcune delle proprietà di ambiente dei controlli WPF hanno equivalenti in Windows Forms. Queste proprietà di ambiente vengono propagate ai controlli Windows Forms ospitati ed esposte come proprietà pubbliche nel controllo WindowsFormsHost. Il controllo WindowsFormsHost converte ogni proprietà di ambiente WPF nell'equivalente Windows Forms.
Per ulteriori informazioni, vedere Mapping di proprietà di Windows Form e WPF.
Comportamento
Nella tabella riportata di seguito vengono descritti i comportamenti di interazione.
Comportamento |
Supportato |
Non supportato |
---|---|---|
Trasparenza |
Il rendering del controllo Windows Forms supporta la trasparenza. Lo sfondo del controllo WPF padre può diventare lo sfondo dei controlli Windows Forms ospitati. |
Alcuni controlli Windows Forms non supportano la trasparenza. Ad esempio, i controlli TextBox e ComboBox non saranno trasparenti quando ospitati da WPF. |
Tabulazione |
L'ordine di tabulazione per i controlli Windows Forms ospitati è uguale al caso in cui i controlli vengono ospitati in un'applicazione basata su Windows Forms. La tabulazione da un controllo WPF a un controllo Windows Forms con il tasto TAB e i tasti MAIUSC+TAB funziona come di consueto. I controlli Windows Forms che dispongono di un valore della proprietà TabStop uguale a false non ricevono lo stato attivo quando l'utente utilizza il tasto TAB per passare da un controllo all'altro.
|
Non applicabile. |
Spostamento mediante i tasti di direzione |
|
Non applicabile. |
Tasti di scelta rapida |
I tasti di scelta rapida funzionano come di consueto, a eccezione di quanto indicato nella colonna "Non supportato". |
I tasti di scelta rapida duplicati tra le tecnologie non funzionano come i tasti di scelta rapida duplicati comuni. Quando un tasto di scelta rapida viene duplicato tra le tecnologie, con almeno un tasto in un controllo Windows Forms e l'altro in un controllo WPF, il controllo Windows Forms riceve sempre il tasto di scelta rapida. Lo stato attivo non passa tra i controlli quando viene premuto il tasto di scelta rapida duplicato. |
Tasti di scelta rapida |
I tasti di scelta rapida funzionano come di consueto, a eccezione di quanto indicato nella colonna "Non supportato". |
|
AcceptsReturn, AcceptsTab e altri comportamenti specifici dei controlli |
Le proprietà che cambiano il comportamento predefinito della tastiera funzionano come di consueto, supponendo che il controllo Windows Forms esegua l'override del metodo IsInputKey per restituire true. |
I controlli Windows Forms che modificano il comportamento predefinito della tastiera gestendo l'evento KeyDown vengono elaborati per ultimi nel controllo WPF host. Dato che questi controlli vengono elaborati per ultimi, possono dare un comportamento imprevisto. |
Eventi Enter e Leave |
Quando lo stato attivo non passa al controllo ElementHost contenitore, gli eventi Enter e Leave vengono generati come nel caso in cui lo stato attivo cambi in un singolo controllo WindowsFormsHost. |
Gli eventi Enter e Leave non vengono generati quando si verificano le seguenti modifiche dello stato attivo:
|
Multithreading |
Sono supportati tutti i tipi di multithreading. |
Entrambe le tecnologie Windows Forms e WPF presuppongono un unico modello di concorrenza a thread singolo. Durante il debug la chiamata agli oggetti framework da altri thread genera un'eccezione per imporre questo requisito. |
Sicurezza |
Tutti gli scenari di interazione richiedono attendibilità totale. |
A nessuno scenario di interazione è consentita un'attendibilità parziale. |
Accessibilità |
Sono supportati tutti gli scenari di accessibilità. I prodotti tecnologici di assistenza funzionano correttamente quando utilizzati per applicazioni ibride che contengono sia i controlli Windows Forms che i controlli WPF. |
Non applicabile. |
Appunti |
Tutte le operazioni relative agli Appunti funzionano come di consueto. Sono comprese le operazioni di ritaglio e di incollamento tra i controlli Windows Forms e WPF. |
Non applicabile. |
Funzionalità di trascinamento della selezione |
Tutte le operazioni di trascinamento della selezione funzionano come di consueto. Sono comprese operazioni tra i controlli Windows Forms e WPF. |
Non applicabile. |
Hosting di controlli WPF in Windows Form
Sono supportati i seguenti scenari di interoperatività quando un controllo Windows Forms ospita un controllo WPF:
Hosting di uno o più controlli WPF mediante il codice.
Associazione di una finestra delle proprietà a uno o più controlli WPF ospitati.
Hosting di una o più pagine WPF in un form.
Avvio di una finestra WPF.
Hosting di un form Master-Details con un master Windows Forms e dettagli WPF.
Hosting di un form Master-Details con un master WPF e dettagli Windows Forms.
Hosting di controlli WPF personalizzati.
Hosting di controlli ibridi.
Proprietà di ambiente
Alcune proprietà di ambiente dei controlli Windows Forms hanno equivalenti in WPF. Queste proprietà di ambiente vengono propagate ai controlli WPF ospitati ed esposte come proprietà pubbliche nel controllo ElementHost. Il controllo ElementHost converte ogni proprietà di ambiente Windows Forms nell'equivalente WPF.
Per ulteriori informazioni, vedere Mapping di proprietà di Windows Form e WPF.
Comportamento
Nella tabella riportata di seguito vengono descritti i comportamenti di interazione.
Comportamento |
Supportato |
Non supportato |
---|---|---|
Trasparenza |
Il rendering del controllo WPF supporta la trasparenza. Lo sfondo del controllo Windows Forms padre può diventare lo sfondo dei controlli WPF ospitati. |
Non applicabile. |
Multithreading |
Sono supportati tutti i tipi di multithreading. |
Entrambe le tecnologie Windows Forms e WPF presuppongono un unico modello di concorrenza a thread singolo. Durante il debug la chiamata agli oggetti framework da altri thread genera un'eccezione per imporre questo requisito. |
Sicurezza |
Tutti gli scenari di interazione richiedono attendibilità totale. |
A nessuno scenario di interazione è consentita un'attendibilità parziale. |
Accessibilità |
Sono supportati tutti gli scenari di accessibilità. I prodotti tecnologici di assistenza funzionano correttamente quando utilizzati per applicazioni ibride che contengono sia i controlli Windows Forms che i controlli WPF. |
Non applicabile. |
Appunti |
Tutte le operazioni relative agli Appunti funzionano come di consueto. Sono comprese le operazioni di ritaglio e di incollamento tra i controlli Windows Forms e WPF. |
Non applicabile. |
Funzionalità di trascinamento della selezione |
Tutte le operazioni di trascinamento della selezione funzionano come di consueto. Sono incluse operazioni tra i controlli Windows Forms e WPF. |
Non applicabile. |
Vedere anche
Attività
Procedura dettagliata: hosting di controlli Windows Form in WPF
Riferimenti
Concetti
Procedura dettagliata: hosting di controlli Windows Form compositi in WPF
Procedura dettagliata: hosting di controlli compositi di WPF in Windows Form