[Silverlight] Comment migrer son "Custom Control" de la Beta 1 à la Beta 2
Avec l'arrivée de Silverlight 2 Beta 2, on peut remarquer qu'il y a quand même pas mal de "breaking changes" entre ces 2 versions. L'une des plus importantes, à mon sens, est la méthodologie utilisée pour la création de contrôles personnalisés.
Avant, nous étions obligé d'hériter d'un contrôle de Silverlight, de surcharger une méthode (OnApplyTemplate) et de définir, à la main, l'apparence de notre contrôle. Avec cette nouvelle version, on découvre un nouvel élément qui entre en jeu: le Visual State Manager, qui vous permettra de définir (via Expression Blend), les différents états et les transitions pour un contrôles.
Certes, cela est très pratique mais cela signifie-t-il que tout le travail que l'on a fait sur la Beta 1 doit-être refait ? Par forcément ! 
En effet, si vous souhaitez continuer à développer vos propres contrôles, il faut trouver le moyen d'indiquer au moteur Silverlight que les styles/templates de vos contrôles se trouvent dans le fichier generic.xaml. Pour cela, rien de plus simple: il vous suffit d'indiquer le style par défaut de vos contrôles, en rajoutant une ligne dans le constructeur:
public ProgressBar() : base()
{
DefaultStyleKey = typeof(ProgressBar);
}
Ensuite, surchargez toujours la méhode OnApplyTemplate (attention, la signature a changé: avant, le modificateur était protected et on est maintenant passé à public):
public override void OnApplyTemplate()
Et c'est tout: votre contrôle devrait remarcher correctement :)
Bien que fonctionnelle, cette technique requiert cependant d'écrire pas mal de code pour faire passer le contrôle d'un état à un autre. Grâce au Visual State Manager, le designer a la possibilité de gérer cela directement dans Blend ! Pour avoir un aperçu, je vous recommande cette vidéo: Aperçu du Visual State Manager.
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :