161 votes

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

Je viens juste de la vitesse sur WPF et souhaitez créer un contrôle WPF réutilisable.

Lorsque j’examine les options pour la 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 ». Il est clair pour moi quoi de la différence entre eux et mes recherches sur Google n’ont pas retroussé explications décentes.

Je voudrais comprendre les différences entre eux et idéalement voir quelques exemples à suivre pour utiliser l’une sur l’autre.

112voto

Mikko Rantanen Points 4343

Dans la pratique, les contrôles personnalisés sont quelque chose que vous mettre en œuvre au niveau du code, tandis que vous pouvez utiliser XAML pour les commandes de l'utilisateur. Les contrôles personnalisés étendre l'une des contrôle WPF classes de base et de fournir des fonctionnalités supplémentaires à l'aide de code de sorte que tous l'ajout de la logique et de la représentation doit être mis en œuvre à l'intérieur du code.

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

Ces contrôles ont une petite différence à partir d'un moteur d'exécution de point de vue. Lors de la construction d'une application et en plaçant un UserControl, le contrôle de l'arbre en béton modèle UserControl à l'intérieur. Donc, si nous considérons une lame exemple d'une institution spécialisée bouton. Si vous utilisez un contrôle de l'utilisateur que vous ajoutez un bouton à l'intérieur de l' <UserControl> élément. Lors de l'utilisation d'un contrôle personnalisé que vous seriez en tirer le contrôle de lui-même à partir d'un bouton le plus probable. La différence serait visible dans l'arborescence logique.

Alors que le contrôle personnalisé serait de fournir une arborescence logique similaire à

  • Fenêtre
    • CustomButton

Le contrôle UserControl donnerait une arborescence logique d'

  • Fenêtre
    • CustomButtonUserControl
      • Bouton

Donc en fin de compte le contrôle UserControl est un ContentControl qui vous permet d'étendre un peu et pour laquelle vous pouvez prédéfinir le contenu. Contrôle personnalisé offre une plus grande souplesse au prix de facilité de mise en œuvre que vous avez à faire de la logique et de l'interaction dans le code au lieu d'avoir l'avantage de XAML.

Si après tout cela, je ne pense pas qu'il y a beaucoup de différence dans les modèles Visual Studio. Probablement le Personnalisé Visual Studio de Contrôle crée un projet avec un vide de contrôle personnalisé, tandis que le Contrôle de l'Utilisateur projet est un projet avec un vide de contrôle de l'utilisateur. Vous pourrez par la suite ajouter toute sorte d'articles pour le projet.

Mise à jour

Et à mon avis lors d'un contrôle personnalisé et de contrôle de l'utilisateur, c'est que si vous pouvez faire quelque chose, avec un contrôle de l'utilisateur et le contrôle supplémentaire de l'élément dans l'arborescence logique ne vous dérange pas, utiliser un contrôle utilisateur en tant qu'ils sont beaucoup plus faciles à créer et à maintenir. Utilisez un contrôle personnalisé uniquement si vous avez une raison de ne pas utiliser un contrôle de l'utilisateur.

23voto

Kent Boogaart Points 97432

A représente un comportement qui est skinnable (pouvant), tandis qu’un est généralement une plus haut niveau agrégation de `` s qui est spécifique à une application.

Plus d’informations disponibles ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X