Partager via


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.

  • Chaque contrôle WindowsFormsHost dispose d'une valeur TabIndex, qui détermine à quel moment ce contrôle WindowsFormsHost recevra le focus.

  • Les contrôles Windows Forms figurant dans un conteneur WindowsFormsHost respectent l'ordre spécifié par la propriété TabIndex. La tabulation à partir du dernier index de tabulation donne le focus au contrôle WPF suivant, s'il existe. S'il n'existe aucun autre contrôle WPF pouvant recevoir le focus, la tabulation retourne au premier contrôle Windows Forms dans l'ordre de tabulation.

  • Les valeurs TabIndex de contrôles figurant dans WindowsFormsHost sont associées aux contrôles Windows Forms frères contenus dans le contrôle WindowsFormsHost.

  • La tabulation respecte le comportement spécifique aux contrôles. Par exemple, le fait d'appuyer sur la touche TAB dans un contrôle TextBox dont la propriété AcceptsTab a la valeur true entraîne l'ajout d'une tabulation dans la zone de texte plutôt que le déplacement du focus.

Non applicable.

Navigation à l'aide des touches de direction

  • La navigation à l'aide des touches de direction dans le contrôle WindowsFormsHost est identique à la navigation dans un contrôle conteneur Windows Forms ordinaire : les touches HAUT et GAUCHE permettent de sélectionner le contrôle précédent et les touches BAS et DROITE permettent de sélectionner le contrôle suivant.

  • Les touches HAUT et GAUCHE à partir du premier contrôle contenu dans le contrôle WindowsFormsHost permettent d'effectuer la même action que le raccourci clavier MAJ+TAB. S'il existe un contrôle WPF pouvant prendre le focus, le focus est déplacé à l'extérieur du contrôle WindowsFormsHost. Ce comportement diffère du comportement ContainerControl standard car aucun déplacement vers le dernier contrôle ne se produit. S'il n'existe aucun autre contrôle WPF pouvant recevoir le focus, le focus est déplacé vers le dernier contrôle Windows Forms dans l'ordre de tabulation.

  • Les touches BAS et DROITE à partir du dernier contrôle contenu dans le contrôle WindowsFormsHost permettent d'effectuer la même action que la touche TAB. S'il existe un contrôle WPF pouvant prendre le focus, le focus est déplacé à l'extérieur du contrôle WindowsFormsHost. Ce comportement diffère du comportement ContainerControl standard car aucun déplacement vers le premier contrôle ne se produit. S'il n'existe aucun autre contrôle WPF pouvant recevoir le focus, le focus est déplacé vers le premier contrôle Windows Forms dans l'ordre de tabulation.

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.

  • Les touches de raccourci Windows Forms gérées lors de la phase de prétraitement ont toujours priorité sur les touches de raccourci WPF. Par exemple, si vous disposez d'un contrôle ToolStrip avec les touches de raccourci CTRL+S définies, et qu'une commande WPF est liée à CTRL+S, le gestionnaire de contrôle ToolStrip est toujours appelé en premier, sans tenir compte du focus.

  • Les touches de raccourci Windows Forms gérées par l'événement KeyDown sont traitées en dernier dans WPF. Vous pouvez éviter ce comportement en substituant la méthode IsInputKey du contrôle Windows Forms ou en gérant l'événement PreviewKeyDown. Retournez true à partir de la méthode IsInputKey, ou affectez true à la propriété PreviewKeyDownEventArgs.IsInputKey dans votre gestionnaire d'événements PreviewKeyDown.

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

Procédure pas à pas : hébergement d'un contrôle composite Windows Forms dans Windows Presentation Foundation

Procédure pas à pas : hébergement d'un contrôle Windows Presentation Foundation dans les Windows Forms

Mappage de propriétés Windows Forms et WPF

Référence

ElementHost

WindowsFormsHost