Scénarios pris en charge en matière d'interopérabilité de Windows Presentation Foundation et Windows Forms
Mise à jour : novembre 2007
WPF et Windows Forms présentent deux architectures différentes pour créer des interfaces d'applications. L'espace de noms System.Windows.Forms.Integration fournit des classes permettant des scénarios d'interopérabilité communs. Les deux principales classes qui implémentent les fonctions d'interopérabilité sont WindowsFormsHost et ElementHost. Cette rubrique décrit les scénarios d'interopérabilité pris en charge et non pris en charge.
Remarque : |
---|
Une attention particulière est accordée au scénario de contrôle hybride. Un contrôle hybride possède un contrôle d'une technologie imbriqué dans un contrôle d'une autre technologie. Il est également appelé interopérabilité imbriquée. Un contrôle hybride à plusieurs niveaux possède plusieurs niveaux d'imbrication de contrôle hybride. Un contrôle Windows Forms qui contient un contrôle WPF, contenant un autre contrôle Windows Forms, est un exemple d'interopérabilité imbriquée à plusieurs niveaux. Les contrôles hybrides à plusieurs niveaux ne sont pas pris en charge. |
Cette rubrique comprend les sections suivantes.
- Hébergement de contrôles Windows Forms dans une application Windows Presentation Foundation
- Hébergement de contrôles Windows Presentation Foundation dans une application Windows Forms
- Rubriques connexes
Hébergement de contrôles Windows Forms dans une application Windows Presentation Foundation
Les scénarios d'interopérabilité suivants sont pris en charge lorsqu'un contrôle WPF héberge un contrôle Windows Forms.
Le contrôle WPF peut héberger un ou plusieurs contrôles Windows Forms à l'aide de XAML.
Il peut héberger un ou plusieurs contrôles Windows Forms à l'aide de code.
Il peut héberger les contrôles conteneur Windows Forms qui contiennent d'autres contrôles Windows Forms.
Il peut héberger un formulaire maître/détail avec un maître WPF et des détails Windows Forms.
Il peut héberger un formulaire maître/détail avec un maître Windows Forms et des détails WPF.
Il peut héberger un ou plusieurs contrôles ActiveX.
Il peut héberger un ou plusieurs contrôles composites.
Il peut héberger des contrôles hybrides à l'aide de XAML (Extensible Application Markup Language).
Il peut héberger des contrôles hybrides à l'aide de code.
Prise en charge de la disposition
La liste suivante décrit les limitations connues lorsque l'élément WindowsFormsHost essaie d'intégrer son contrôle Windows Forms hébergé dans le système de disposition WPF.
Dans certains cas, les contrôles Windows Forms ne peuvent pas être redimensionnés ou peuvent l'être uniquement à des dimensions spécifiques. Par exemple, un contrôle Windows FormsComboBox prend en charge la seule hauteur définie par la taille de police du contrôle. Dans une disposition dynamique WPF, qui suppose que les éléments peuvent être étirés verticalement, un contrôle ComboBox hébergé ne s'étirera pas comme prévu.
Les contrôles Windows Forms ne peuvent pas subir de rotation ni d'inclinaison. Par exemple, lorsque vous faites pivoter l'interface utilisateur de 90 degrés, les contrôles Windows Forms hébergés conservent leur position droite.
Dans la plupart des cas, les contrôles Windows Forms ne prennent pas en charge la mise à l'échelle proportionnelle. Même si les dimensions générales du contrôle sont mises à l'échelle, les contrôles enfants et les éléments de composant du contrôle peuvent ne pas être redimensionnés comme prévu. Cette limitation dépend de la prise en charge de la mise à l'échelle de chaque contrôle Windows Forms.
Dans une interface utilisateur WPF, vous pouvez modifier l'ordre de plan des éléments afin d'en contrôler la superposition. Un contrôle Windows Forms hébergé est dessiné dans un handle de fenêtre (HWND) séparé ; ainsi, il apparaît toujours au-dessus des éléments WPF.
Les contrôles Windows Forms prennent en charge la mise à l'échelle automatique en fonction de la taille de police. Dans une interface utilisateur WPF, la modification de la taille de police n'entraîne pas de redimensionnement de la disposition entière, bien que chaque élément individuel puisse être redimensionné dynamiquement.
Propriétés ambiantes
Certaines propriétés ambiantes des contrôles WPF disposent d'équivalents Windows Forms. Ces propriétés ambiantes sont propagées par les contrôles Windows Forms hébergés et exposées comme propriétés publiques sur le contrôle WindowsFormsHost. Le contrôle WindowsFormsHost convertit chaque propriété ambiante WPF en son équivalent Windows Forms.
Pour plus d'informations, consultez Mappage de propriétés Windows Forms et WPF.
Comportement
Le tableau suivant décrit le comportement d'interopérabilité.
Comportement |
Pris en charge |
Non pris en charge |
---|---|---|
Transparence |
Le rendu d'un contrôle Windows Forms prend en charge la transparence. L'arrière-plan du contrôle WPF parent peut devenir l'arrière-plan de contrôles Windows Forms hébergés. |
Certains contrôles Windows Forms ne prennent pas en charge la transparence. Par exemple, les contrôles TextBox et ComboBox ne sont pas transparents lorsqu'ils sont hébergés par WPF. |
Tabulation |
L'ordre de tabulation des contrôles Windows Forms hébergés est identique à ceux des contrôles hébergés dans une application Windows Forms. La tabulation à partir d'un contrôle WPF vers un contrôle Windows Forms à l'aide des touches TAB et MAJ+TAB fonctionne normalement. Les contrôles Windows Forms dont la propriété TabStop a la valeur false ne reçoivent pas le focus lorsque l'utilisateur utilise la tabulation entre les contrôles.
|
Non applicable. |
Navigation à l'aide des touches de direction |
|
Non applicable. |
Accélérateurs |
Les accélérateurs fonctionnent normalement, sauf si la mention Non pris en charge figure dans la colonne. |
Les accélérateurs en double entre les technologies ne fonctionnent pas comme les accélérateurs ordinaires en double. Si un accélérateur est dupliqué entre des technologies, avec au moins un sur un contrôle Windows Forms et l'autre sur un contrôle WPF, le contrôle Windows Forms reçoit toujours l'accélérateur. Le focus n'est pas basculé entre les contrôles lorsque l'accélérateur en double est utilisé. |
Touches de raccourci |
Les touches de raccourci fonctionnent normalement, sauf si la mention Non pris en charge figure dans la colonne. |
|
AcceptsReturn, AcceptsTab, et autre comportement spécifique aux contrôles |
Les propriétés qui modifient le comportement par défaut du clavier fonctionnent normalement, en supposant que le contrôle Windows Forms se substitue à la méthode IsInputKey pour retourner true. |
Les contrôles Windows Forms qui modifient le comportement par défaut du clavier en gérant l'événement KeyDown sont traités en dernier dans le contrôle WPF hébergé. Étant donné que ces contrôles sont traités en dernier, leur comportement peut être inattendu. |
Événements Enter et Leave |
Lorsque le focus n'est pas donné au contrôle ElementHost conteneur, les événements Enter et Leave sont déclenchés si le focus est modifié dans un seul contrôle WindowsFormsHost. |
Les événements Enter et Leave ne sont pas déclenchés lorsque la modification suivante de focus se produit :
|
Multithreading |
Tous les types de multithreading sont pris en charge. |
Les technologies Windows Forms et WPF supposent l'utilisation d'un modèle concurrentiel monothread. Lors du débogage, les appels aux objets d'infrastructure d'autres threads lèvent une exception pour faire appliquer ces spécifications. |
Sécurité |
Tous les scénarios d'interopérabilité nécessitent une confiance totale. |
Aucun scénario d'interopérabilité n'est autorisé avec une confiance partielle. |
Accessibilité |
Tous les scénarios d'accessibilité sont pris en charge. Les produits de technologie d'assistance fonctionnent correctement s'ils sont utilisés pour des applications hybrides qui contiennent à la fois des contrôles Windows Forms et des contrôles WPF. |
Non applicable. |
Presse-papiers |
Toutes les opérations de Presse-papiers fonctionnent normalement. Notamment les opérations couper-coller entre les contrôles Windows Forms et WPF. |
Non applicable. |
Fonctionnalité glisser-déplacer |
Toutes les opérations glisser-déplacer fonctionnent normalement. Notamment les opérations glisser-déplacer entre les contrôles Windows Forms et WPF. |
Non applicable. |
Hébergement de contrôles Windows Presentation Foundation dans une application Windows Forms
Les scénarios d'interopérabilité suivants sont pris en charge lorsqu'un contrôle Windows Forms héberge un contrôle WPF.
Hébergement d'un ou plusieurs contrôles WPF à l'aide de code.
Association d'une feuille de propriétés et d'un ou plusieurs contrôles WPF hébergés.
Hébergement d'une ou plusieurs pages WPF dans un formulaire.
Démarrage d'une fenêtre WPF.
Hébergement d'un formulaire maître/détail avec un maître Windows Forms et des détails WPF.
Hébergement d'un formulaire maître/détail avec un maître WPF et des détails Windows Forms.
Hébergement de contrôles WPF personnalisés.
Hébergement de contrôles hybrides.
Propriétés ambiantes
Certaines propriétés ambiantes des contrôles Windows Forms disposent d'équivalents WPF. Ces propriétés ambiantes sont propagées par les contrôles WPF hébergés et exposées comme propriétés publiques sur le contrôle ElementHost. Le contrôle ElementHost convertit chaque propriété ambiante Windows Forms en son équivalent WPF.
Pour plus d'informations, consultez Mappage de propriétés Windows Forms et WPF.
Comportement
Le tableau suivant décrit le comportement d'interopérabilité.
Comportement |
Pris en charge |
Non pris en charge |
---|---|---|
Transparence |
Le rendu d'un contrôle WPF prend en charge la transparence. L'arrière-plan du contrôle Windows Forms parent peut devenir l'arrière-plan de contrôles WPF hébergés. |
Non applicable. |
Multithreading |
Tous les types de multithreading sont pris en charge. |
Les technologies Windows Forms et WPF supposent l'utilisation d'un modèle concurrentiel monothread. Lors du débogage, les appels aux objets d'infrastructure d'autres threads lèvent une exception pour faire appliquer ces spécifications. |
Sécurité |
Tous les scénarios d'interopérabilité nécessitent une confiance totale. |
Aucun scénario d'interopérabilité n'est autorisé avec une confiance partielle. |
Accessibilité |
Tous les scénarios d'accessibilité sont pris en charge. Les produits de technologie d'assistance fonctionnent correctement s'ils sont utilisés pour des applications hybrides qui contiennent à la fois des contrôles Windows Forms et des contrôles WPF. |
Non applicable. |
Presse-papiers |
Toutes les opérations de Presse-papiers fonctionnent normalement. Notamment les opérations couper-coller entre les contrôles Windows Forms et WPF. |
Non applicable. |
Fonctionnalité glisser-déplacer |
Toutes les opérations glisser-déplacer fonctionnent normalement. Notamment les opérations glisser-déplacer entre les contrôles Windows Forms et WPF. |
Non applicable. |
Voir aussi
Concepts
Mappage de propriétés Windows Forms et WPF