Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF] SpellCheck: La correction orthographique de WPF

Faire du Silverlight, c'est pas mal mais je tenais à vous reparler un peu de WPF (Windows Presentation Foundation), une de mes grandes passions (avec LINQ Smile)

WPF est livré, en standard, avec des fonctionnalités de correction orthographique (SpellCheck)  pour les contrôles de saisie de texte:

  • TextBox
  • RichTextBox

Pour activer la correction orthographique, il vous suffit de mettre à True l'attribut/propriété SpellCheck.IsEnabled:

<StackPanel x:Name="LayoutRoot">

    <TextBox x:Name="tb" SpellCheck.IsEnabled="True" />

</StackPanel>

Une fois cette propriété activée, la correction orthographique est automatiquement activée et dès lors qu'un mot est mal écrit dans la zone de texte, celui-ci est souligné en rouge:

image

En faisant un clic droit sur le mot souligné en rouge (autrement dit le mot qui n'est pas correctement écrit), vous avez la possibilité de faire apparaitre une menu contextuel qui vous affiche une liste de suggestions possibles:

image

Si vous cliquez sur l'un des mots proposés dans cette liste, le mot que vous avez choisi remplace alors le mot de la zone de texte.

Vous pourriez vous demander (et vous auriez tout à fait raison) d'où provient cette liste de suggestions. En fait, il s'agit d'une copie du dictionnaire utilisé par Office 2007. Attention, il s'agit d'une copie par conséquent, vous n'êtes pas obligé de posséder Office 2007 pour que cela fonctionne Wink

De plus, vous devez savoir qu'il n'est, pour le moment, pas possible de changer le dictionnaire utilisé par WPF pour le remplacer par votre propre dictionnaire (source de mots/données). Cette fonctionnalité n'est pas présente dans la V1 cependant, les équipes de développement réfléchissent à la possibilité de rendre cela possible dans la prochaine version de WPF.

Par défaut, WPF est livré avec 4 dictionnaires de langues: Anglais, Espagnol, Allemand et Français. Si vous voulez changer le dictionnaire en cours, vous allez devoir spécifier la valeur de l'attribut/propriété Language:

<StackPanel x:Name="LayoutRoot">

    <TextBox x:Name="tb" SpellCheck.IsEnabled="True" Language="en-US" />

</StackPanel>

Comme vous pouvez le constater, les valeurs possibles sont indiquées sous la forme de culture, autrement dit dans le format: xx-XX.

Maintenant, il est évident qu'Office 2007 n'est pas parfait et ne connait pas forcément tous les mots que vous voudriez employer (surtout s'il s'agit de mots spécifiques à votre métier).

Vous ne pouvez pas, de base, rajouter des mots dans la liste des suggestions qui s'affiche via le menu contextuel. En effet, il n'y a pas d'APIs disponibles permettant de le faire. Cependant, vous pouvez tout à fait contourner ce problème en créant votre propre menu contextuel, en récupérant la liste des suggestions proposées puis en ajoutant vos propres mots. Pour cela, il vous suffit d'utiliser le code suivant, qui permet de récupérer la liste des suggestions pour un mot mal orthographié:

void tb_ContextMenuOpening(object sender, ContextMenuEventArgs e)

{

     SpellingError error = this.tb.GetSpellingError(this.tb.CaretIndex);

 

     if (error != null)

     {

          foreach (string suggestion in error.Suggestions)

          {

               // Add suggestion to the ContextMenu

          }

               // Add your custom words to the ContextMenu

      }

}

Vous venez de personnaliser avec succès la liste de suggestion Smile

Et voila qui conclut notre petit tour du SpellCheck. Comme vous pouvez le voir, la correction orthographique disponible avec WPF est relativement complète (même si certains points sont encore manquants) et permet de réaliser, très facilement, des applications offrant la meilleure expérience utilisateur.

 

A+

 

del.icio.us tags:
 
Technorati tags:
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 :
Posted: lundi 28 mai 2007 09:33 par Thomas LEBRUN
Classé sous : , ,

Commentaires

Matthieu MEZIL a dit :

Excellent !

Merci pour l'info Thomas.

# mai 28, 2007 10:14

Erebuss a dit :

Foiré Tom ...

Maintenant je vais être obligé de l'activer dans la prochaine version du BO ;)

# mai 28, 2007 10:36
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Accès anonyme et les pages Forms / viewlsts.aspx... par Nicolas Humann le il y a 1 heure et 57 minutes

- l'Atelier 4 du coach C# est disponible par Bernard Fedotoff le il y a 3 heures et 33 minutes

- [WPF] Formatter l’affichage lors d’un binding, via StringFormat par Thomas Lebrun le il y a 8 heures et 35 minutes

- WSC08 : Le bilan, Les Photos, Les Webcasts à voir ou à revoir par Blog de Daniel TIZON [daniel] le il y a 17 heures et 42 minutes

- SharePoint et ses DB : Avez vous pensé à les "Tweaker" ? par The Mit's Blog le il y a 18 heures et 11 minutes

- NTttcp : Mesurer la vitesse d'un réseau par Blog d'Olivier Huet le il y a 18 heures et 36 minutes

- Un nouveau quizz par Matthieu MEZIL le il y a 21 heures et 20 minutes

- Webcast ADO.NET Data Services par Matthieu MEZIL le il y a 21 heures et 23 minutes

- edmx : mise à jour du modèle depuis la base par Matthieu MEZIL le 10-06-2008, 17:47

- Alternatif - Mono 2.0 est arrivé! par #Rui le 10-06-2008, 16:33