Ce sont trois choses différentes que vous pouvez ajouter à un projet et je ne suis pas sûr de comprendre la différence. Ils semblent tous par exemple apparaître dans la boîte à outils des composants lorsque vous travaillez avec un Form
. Quels sont les scénarios d'utilisation courants pour chacun d'eux? Quelle est la différence?
La principale différence entre le contrôle utilisateur, le contrôle personnalisé et le composant est qu'ils héritent de différents niveaux dans l'arborescence d'héritage:
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
Donc, en bref, vous obtenez une quantité différente de fonctionnalités pré-câblées avec les différentes options.
Quand utiliseriez-vous les différentes options? (ce sont des pensées et des opinions, pas des vérités)
Un contrôle faiblement couplé avec code et interface utilisateur
Dérive du contrôle
Définit l'interface utilisateur dans un ResourceDictionary
L'interface utilisateur est skinable
Dispose d'une disposition dynamique
L'interface utilisateur peut être modifiée dans différents projets
A un support complet de boîte à outils
Définit un seul contrôle
Plus flexible
==============
Un contrôle étroitement couplé avec code et interface utilisateur
Dérive de UserControl
Définit l'interface utilisateur comme XAML normal
Les contrôles enfants sont skinable
Dispose d'une disposition statique
L'interface utilisateur est fixe et ne peut pas avoir un aspect différent dans un projet différent
Ne peut pas être ajouté à la boîte à outils
Définit un ensemble de contrôles
Pas très flexible comme un contrôle personnalisé
Pour ajouter à ce que Fredrik a dit, les composants et les contrôles personnalisés sont généralement utilisés lorsque vous prévoyez de les réutiliser dans plusieurs projets. Utilisez les contrôles utilisateur lorsque vous ne l'utiliseriez que dans un seul projet.
Je pense que la dernière affirmation n'est pas correcte à mon avis. Je crée des contrôles utilisateur pour de nombreuses raisons différentes.
La raison principale est que si, par exemple, je conçois une interface de plusieurs contrôles regroupés.
Je crée d'abord une bibliothèque de classes, puis j'y ajoute des contrôles utilisateur. Maintenant, si je dois changer une partie de la logique derrière le fonctionnement du contrôle utilisateur, je peux très facilement. Cette bibliothèque de classes peut également être utilisée plusieurs fois.
Toujours dans la même bibliothèque chic, je peux avoir plusieurs classes qui peuvent être partagées et utilisées pour n'importe lequel de mes contrôles utilisateur.
C'est la principale raison pour laquelle j'utilise les contrôles utilisateur. Et si vous modifiez votre contrôle utilisateur ou votre bibliothèque de classes. une fois que vous avez créé le travail. la dll sera mise à jour dynamiquement dans le dossier bin.
Donc, si je fais référence à cela dans un autre projet, ces modifications apparaîtront également dans le nouveau projet.
De plus, il n'utilise pas les mêmes routines Paint que le formulaire et tout ce que vous avez chargé sur le formulaire.
Ainsi, les contrôles utilisateur nous donnent la possibilité d'être très modulaires Et je peux avoir plusieurs contrôles utilisateur qui partagent les classes de base de la bibliothèque de classes ... Donc, un objectif de contrôle utilisateur n'est tout simplement pas pour un seul projet. Il n'a pas de limites à cet égard. Jeff