web-dev-qa-db-fra.com

Quelle est la différence entre une bibliothèque de contrôle utilisateur et une bibliothèque de contrôle personnalisée?

Je viens juste de me familiariser avec WPF et j'aimerais créer un contrôle WPF réutilisable.

Lorsque je regarde les options de création de projets dans Visual Studio, je vois "Bibliothèque de contrôles utilisateur WPF" et "Bibliothèque de contrôles personnalisés WPF". La différence entre eux n’est pas claire et mes recherches sur Google n’ont donné aucune explication satisfaisante.

J'aimerais comprendre les différences qui les séparent et, idéalement, voir quelques exemples d'utilisation de l'un sur l'autre.

159
17 of 26

En pratique, les contrôles personnalisés sont quelque chose que vous implémentez au niveau du code alors que vous pouvez utiliser XAML pour les contrôles utilisateur. Les contrôles personnalisés étendent l'une des classes de base de contrôle WPF et fournissent des fonctionnalités supplémentaires via le code, de sorte que toute la logique et la représentation ajoutées doivent être implémentées dans le code.

Techniquement, un contrôle utilisateur est un contrôle de contenu normal que vous pouvez étendre dans certaines parties du code, mais il est généralement étendu en y plaçant d'autres contrôles. Donc, comme Kent l'a mentionné, UserControl est une agrégation d'autres contrôles. Cela limite considérablement ce que vous pouvez faire avec un contrôle utilisateur. Il est plus facile à utiliser mais plus limité qu'un contrôle personnalisé complet.

Ces contrôles ont une petite différence du point de vue de l'exécution. Lors de la création d'une application et du placement d'un UserControl dans celle-ci, un modèle UserControl concret sera inséré dans l'arborescence du contrôle. Donc, si nous considérons un exemple boiteux d'un bouton spécialisé. Si vous utilisiez un contrôle utilisateur, vous ajouteriez un bouton dans le <UserControl> élément. Lorsque vous utilisez un contrôle personnalisé, vous tirez le contrôle du bouton lui-même. La différence serait visible dans l'arborescence logique.

Alors que le contrôle personnalisé fournirait un arbre logique similaire à

  • Fenêtre
    • Bouton personnalisé

UserControl donnerait un arbre logique de

  • Fenêtre
    • CustomButtonUserControl
      • Bouton

Donc au final, UserControl est juste un ContentControl normal que vous pouvez étendre un peu et pour lequel vous pouvez prédéfinir le contenu. Le contrôle personnalisé offre une plus grande flexibilité au prix de la facilité d'implémentation, car vous devez effectuer toute la logique et les interactions dans le code au lieu de bénéficier des avantages du XAML.

Bien que, après tout cela, je ne pense pas qu'il y ait beaucoup de différence entre les modèles Visual Studio. Très probablement, le contrôle personnalisé Visual Studio crée simplement un projet avec un contrôle personnalisé vide, tandis que le projet Contrôle utilisateur est un projet avec un contrôle utilisateur vide. Vous pouvez ensuite ajouter n'importe quel type d'éléments au projet.

Mise à jour

Et mon opinion sur le moment d'utiliser le contrôle personnalisé et le contrôle utilisateur est que, si vous pouvez obtenir quelque chose avec un contrôle utilisateur et que l'élément de contrôle supplémentaire de l'arborescence logique ne vous dérange pas, utilisez un contrôle utilisateur, car ils sont tellement plus faciles à utiliser. créer et maintenir. Utilisez un contrôle personnalisé uniquement si vous avez une raison de ne pas utiliser un contrôle utilisateur.

111
Mikko Rantanen

Un Control représente un comportement skinable (modèle), alors qu'un UserControl est généralement une agrégation de niveau supérieur de Controls spécifique à une application.

Plus d'infos disponibles ici .

23
Kent Boogaart