Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

Picker pour Enum avec description et localisation sous Xamarin.Forms

Comment permettre la sélection par l’utilisateur d’une valeur appartenant à une énumération ? En créant un Picker personnalisé ! Comment personnaliser les options ? Par des attributs ! Comment rendre tout cela traduisible ? Avec des ressources ! Tout cela vous sera divulgué dans ces deux vidéos de Dot.Vlog !

To pick or not to pick

That is the question…

En effet, les Enum (énumérations C#) sont très pratiques, elles évitent l’utilisation de chaînes de caractères, sont facilement contrôlées par le compilateur, elles se prêtent aisément à tout refactoring ou évolution, bref les Enum c’est génial.

Très souvent les Enum ont un sens pour l’utilisateur dans le cadre de son activité. Etat d’un document, d’un processus industriel, modes de règlements, etc… Il est alors très tentant de vouloir proposer une sélection directe des valeurs possibles.

Hélas aucun contrôle ne permet d’effectuer une telle sélection sur une Enum. Les listes et autres pickers acceptent des sources de données certes, mais sous forme de collections le plus souvent.

Pas de bricolage !

Le bricolage consiste comme on le voit souvent à transformer les valeurs d’une Enum en string puis à les placer dans une List<string> qu’on donnera ensuite en source de données à une ListView ou un Picker ou autre contrôle UI de sélection.

S’il faut refaire cela pour plusieurs Enum dans l’application on commence mal… sans parler qu’il va falloir ajouter du code pour traduire en sens inverse le choix de l’utilisateur, une string donc, en une valeur d’une Enum bien particulière. Ouch !

Pire encore les évolutions des Enum demanderont à modifier le code, sans rien oublier nulle part… sinon gare aux bugs !

Je pourrais continuer tellement les embuches vont s’entasser et transformer une bonne idée en une horreur.

Une solution propre

L’une des meilleurs solutions est d’isoler tous ces traitements et de les confiner dans un contrôle. C’est ça la programmation Objet dont le premier principe est l’Encapsulation !

Mais partir de rien est fastidieux, le contrôle le plus proche et le mieux approprié est le Picker. Mettons ainsi en œuvre le second principe de la programmation Objet : l’Héritage !

Nous verrons même que nous irons jusqu’à détourner le troisième principe qui est le Polymorphisme…

C’est ainsi une solution propre au sens de la programmation objet que je vais vous présenter.

Deux vidéos pour un seul sujet

Le format que j’impose à Dot.Vlog est que chaque vidéo ne doit pas dépasser 30 min et faire moins si possible. 15 à 20 min étant une bonne durée. Et certains sujets débordent de ce format. Ce fut le cas du Visual State Manager (trois vidéos !) et c’est le cas ici. Mais deux vidéos suffiront à couvrir les trois versions améliorées au fur et à mesure du Picker.

Partie 1/2

Lien direct : http://tinyurl.com/y8empbud

Partie 2/2

Lien direct : https://youtu.be/pRWX3CPXDWo

Commentaires

N’hésitez pas visionner ces vidéos directement sur Youtube et à laisser vos commentaires sur la page des vidéos. Les commentaires laissés ici ne sont pas pris en compte par l’algorithme de Youtube.

Abonnez-vous !

Allez sur YouTube et abonnez-vous à la chaîne vous serez prévenus de chaque sortie en priorité !

Profitez-en pour liker, c’est ce qui permet avec les commentaires que la chaîne soit mieux recommandée.

Vous imaginez bien que sur un tel sujet je ne risque pas d’atteindre les 10 millions de vues ni même les 10 millions d’abonnés. Soyons lucides… Cette chaîne ne sera jamais “monétisable”, et cela ne me dérange pas. Mais en revanche partagez, parlez-en à vos collègues, incitez-les à s’abonner, car passer tout ce temps à faire des vidéos n’a d’intérêt que si elles sont regardées par le plus grand nombre. Non pour mon compte en banque vous l’avez compris, ni pour la gloire (même si, sans hypocrisie, il est toujours bon d’entretenir une réputation ), mais bien pour le seul et unique plaisir de partager un savoir. C’est le seul moteur de Dot.Blog et c’est celui de Dot.Vlog.

Alors pensez à diffuser l’information autour de vous !

Bonus : le code source

Pour les courageux qui auront lu jusqu’ici voici le lien Dropbox vers le répertoire qui contient le code source de toutes les vidéos Dot.Vlog. Conservez-le, les nouveaux exemples viendront s’ajouter avec le temps….

Facile à retenir, le lien raccourci est http://tiny.cc/DotVlog

Conclusion

Les Enum ne sont vraiment pas la feature la plus exaltante de C#, mais c’est l’une des plus pratiques ! Et c’est surtout comment on s’en sert qui permet de développer des connaissances nouvelles, de la compétence et du plaisir à produire un code objet propre mais aussi des UI de meilleure qualité !

Stay Tuned !

blog comments powered by Disqus