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.