Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

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

[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

Tony Lootens a dit :

Bonjour,

J'ai essayé, en vain, d'activer la correction orthographique française en WPF...

Cela fonctionne uniquement en en-US ou en-GB.

Il faut savoir que mon OS Windows XP est en anglais.

Quel est l'astuce pour arriver à activer la correction orthographique française.

Vu les différents threads sur ce sujet, il semble que je ne suis pas seul avec ce souci.

Merci,

Tony

# octobre 10, 2008 09:45
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Silverlight 3 : Communication et multicast par Kévin Gosse le il y a 9 heures et 8 minutes

- [Perso] Découvertes estivales : Linux (Part I) par Le blog de FremyCompany le il y a 11 heures et 50 minutes

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le 07-04-2009, 00:50

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le 07-03-2009, 23:36

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15