Le Xamarin Community Toolkit
Tags: xamarinforms, xamarin, communitytoolkit, french
Published: 2021-01-27 17:21:04

---
title: Le Xamarin Community Toolkit
published: true
date: 2021-01-27 16:58:25 UTC
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/xly1ky2e5cn5x6j3jzdu.png
tags: xamarinforms,xamarin,communitytoolkit,french
canonical_url: https://www.sylvainmoingeon.fr/le-xamarin-community-toolkit/
---

Fruit de la collaboration entre l'équipe Xamarin et la communauté Open Source, le [Xamarin Community Toolkit](https://github.com/xamarin/XamarinCommunityToolkit) est à [Xamarin.Forms](https://www.sylvainmoingeon.fr/tags/xamarinforms/) ce que le sabre laser est au Jedi, c'est-à-dire son indispensable complément.

![](https://www.sylvainmoingeon.fr/media/posts/41/communitytoolkit.png)

Si j'en parle aujourd'hui, c'est parce que le toolkit est désormais disponible dans sa version stable mais aussi parce que c'est lui qui recevra toutes les nouveautés concernant Xamarin.Forms, cette plateforme n'étant plus vouée à évoluer après la version 5.0 et jusqu'à son absorption par [dotNet MAUI](https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/). Mais voyons cela plus en détails.

* * *

## Xamarin.Forms 5.0 

[Xamarin.Forms](https://www.sylvainmoingeon.fr/tags/xamarinforms/) est depuis peu disponible dans sa dernière version, et quand je dis dernière, c'est réellement la dernière. Ensuite, il n'y en aura plus ! Mais n'ayez crainte, il ne s'agit pas d'une disparition mais d'une mutation vers [Microsoft MAUI](https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/).

Toujours est-il que dans un soucis de qualité, l'équipe Xamarin a décidé que cette dernière mouture serait avant tout axée sur la stabilité et l'amélioration des performances. Le choix a donc été fait de déplacer dans le Community Toolkit les fonctionnalités de Xamarin.Forms qui étaient restée au stade expérimental (comme les contrôles [Expander](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/views/expander) ou [MediaElement](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/views/mediaelement) par exemple) ou dont le développement n'était pas terminé.

C'est donc au [Community Toolkit](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/) que revient la charge de toutes les nouveautés de Xamarin.Forms !

> Vous comprenez donc bien que pour bénéficier des prochaines évolutions de Xamarin.Forms, il faudra vous tourner vers le toolkit !

Mais ce fameux toolkit, que contient-il donc ?

## Le Xamarin Community Toolkit 

Je ne vais pas vous donner une liste exhaustive du contenu du toolkit, d'abord parce que tout est disponible dans [sa documentation](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/) et surtout il va continuer d'évoluer après l'écriture de cet article. Mais voici ce que vous y trouverez dans les grandes lignes.

### Behaviors 

Fonctionnalité peu connue (ou en tout cas trop peu utilisée) de Xamarin.Forms, les `Behaviors` sont des bouts de code réutilisables qui ajoutent des comportements à vos composants XAML. Leur puissance est d'être modulable et de permettre d'ajouter ou de modifier des comportements à des contrôles XAML sans en modifier le code ni en créer de nouveaux.

Par exemple, vous trouverez dans le toolkit un `EmailValidationBehavior` qui, vous l'aurez compris, ajoute un comportement de validation d'email à vos champs de saisie.

Dans un autre registre, il y a le toujours très utile `EventToCommandBehavior` qui permet d'exécuter une commande de votre ViewModel à partir du déclenchement d'un événement du contrôle.

Bref, les `Behaviors` sont puissants et très diversifiés, vous en trouverez une grosse douzaine dans le toolkit !

### Converters 

Les `Converters` deviennent vite indispensables quand on souhaite suivre proprement l'architecture MVVM. Ils évitent bien des bidouilles inutiles dans vos ViewModels (genre créer artificiellement une propriété qui inverse la valeur booléenne d'une autre, vous voyez ce que je veux dire, hein, inutile de nier !).

Le plus connu de tous est sans doute le `Converter` d'inversion de booléen : vous avez une propriété `IsBusy` dans votre ViewModel et vous voulez rendre un contrôle visible quand sa valeur est `false`. Vous devez donc lier la propriété `IsVisible` avec l'inverse de `IsBusy` ! Vous avez le choix entre [faire le cradingue](https://dev.to/sylvainmoingeon/developpez-des-applications-sans-crotte-de-nez-mc4) et ajouter une nouvelle propriété `IsNotBusy` dans votre code (non mais quelle horreur) ou faire cela proprement avec un Converter.

C'est une vingtaine de `Converters` très utiles qui vous attendent dans le toolkit.

### Des tas de Views (contrôles XAML) 

AvatarView, BadgeView, CameraView, Expander, MediaElement... une douzaine de contrôles XAML prêts à l'emploi qui vous éviteront d'installer de multiples librairies tierces pas toujours maintenus dans le temps et finissent souvent par poser des problèmes de compatibilité. Ici, pas de soucis, c'est maintenu main dans la main par l'équipe Xamarin et la communauté.

### Et d'autres choses encore 

Des helpers MVVM, des `Effects` XAML (cousin des `Behaviors` mais plus light), des extensions, pour en savoir plus, je vous invite à consulter [la documentation](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/) et les quelques ressources que je donne juste après, là, maintenant.

## Ressources 

J'ai déjà donné le lien plusieurs fois mais si vous l'avez manqué, dirigez-vous vers la [documentation officielle du Xamarin Community Toolkit](https://docs.microsoft.com/fr-fr/xamarin/community-toolkit/).

Le dépôt GitHub : [https://github.com/xamarin/XamarinCommunityToolkit](https://github.com/xamarin/XamarinCommunityToolkit)

Le dépôt de l'application d'exemples : [https://github.com/xamarin/XamarinCommunityToolkit/tree/main/samples](https://github.com/xamarin/XamarinCommunityToolkit/tree/main/samples)

L'article de blog de Gerald Versluis : [Xamarin Community Toolkit: A Must-Have Xamarin Library](https://devblogs.microsoft.com/xamarin/xamarin-community-toolkit/)

Les vidéos de présentation par deux stars du monde Xamarin (Gerald Versluis et Javier Suarez)

{% youtube l09fzU0_N04%}
{% youtube JmZbfr1590A%}