Je viens juste de me mettre au courant de WPF et je voudrais créer un contrôle WPF réutilisable.
Lorsque je regarde les options de création de projets dans Visual Studio, je vois «WPF User Control Library» et «WPF Custom Control Library». Je ne sais pas quelle est la différence entre eux et mes recherches sur Google n'ont donné aucune explication décente.
J'aimerais comprendre les différences entre eux et, idéalement, voir quelques exemples d'utilisation de l'un par rapport à l'autre.
wpf
user-controls
custom-controls
17 sur 26
la source
la source
Réponses:
En pratique, les contrôles personnalisés sont quelque chose que vous implémentez au niveau du code tandis 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.
Un contrôle utilisateur est techniquement un contrôle de contenu normal 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. Ainsi, comme Kent l'a mentionné, un UserControl est une agrégation d'autres contrôles. Cela limite considérablement ce que vous pouvez faire avec un contrôle utilisateur. C'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. Lorsque vous créez une application et y placez un UserControl, l'arborescence de contrôle contiendra un modèle UserControl concret. Donc, si nous considérons un exemple boiteux d'un bouton spécialisé. Si vous utilisiez un contrôle utilisateur, vous ajouteriez un bouton à l'intérieur de l'
<UserControl>
élément. Lorsque vous utilisez un contrôle personnalisé, vous dérivez probablement le contrôle lui-même à partir d'un bouton. La différence serait visible dans l'arborescence logique.Alors que le contrôle personnalisé fournirait une arborescence logique similaire à
Le UserControl donnerait un arbre logique de
Donc, en fin de compte, UserControl n'est qu'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é de mise en œuvre car vous devez faire toute la logique et l'interaction dans le code au lieu de bénéficier de XAML.
Bien qu'après tout cela, je ne pense pas qu'il y ait autant de différence dans 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 de contrôle utilisateur est un projet avec un contrôle utilisateur vide. Vous pouvez ultérieurement ajouter n'importe quel type d'éléments au projet.
Mettre à jour
Et mon opinion sur le moment d'utiliser le contrôle personnalisé et le contrôle utilisateur est que si vous pouvez faire quelque chose avec un contrôle utilisateur et que l'élément de contrôle supplémentaire dans 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.
la source
A
Control
représente un comportement skinnable (modélisable), alors que aUserControl
est généralement une agrégation de niveau supérieur deControl
s qui est spécifique à une application.Plus d'informations disponibles ici .
la source