Warning : This page has been marked as an archive because the author consider that its content is no longer relevant.

On m’a récemment posé cette question qui revient régulièrement à propos des UserControl et des CustomControl.

Mais avant de pouvoir répondre il faut définir chacun de ces deux termes.

Un UserControl est une agrégation de contrôles existants. Il dispose d’un fichier Xaml décrivant son visuel et d’un fichier de code-behind. On peux donc y définir des Bindings.

Un bon exemple de ce type de contrôle est un LoginControl, contenant deux TextBox (login et mot de passe) et un bouton lançant, de quelque manière que ce soit, une authentification.

Un CustomControl quant à lui est un contrôle qui hérite de contrôles existant (tels que ContentControl ou ItemsControl). Son code contient uniquement de la logique et il n’a pas de fichier Xaml associé. Son interface par défaut (j’insiste sur le “par défaut”) est contenu dans un fichier séparé. Ce fichier est généralement le fichier generic.xaml créé automatiquement par Visual Studio dans l’assembly du contrôle lors de la création de celui-ci. Ce type de contrôle est templatisable (désolé pour tout les anglicismes) et la description de son interface est elle-même un template.

De bons exemples de ce type de contrôle sont la plupart des contrôles de génération de graphiques (camembert, radars etc..).

Les cas où utiliser ces différents types de contrôles se déduisent donc de leurs caractéristiques. J’ai tendance à dire (et celà n’engage donc que moi) qu’il ne faut utiliser les UserControl que si l’on a vraiment pas besoin des caractéristiques des CustomControls. Les UserControls sont, à mon sens, à réserver aux cas les plus simples où la customisation de l’interface du contrôle est limitée et où le contrôle ne se résume qu’à englober des contrôles ensemble dans une “boîte” réutilisable.

Comments