2010-04-16 14 views
5

Ich muss die Rechtschreibprüfung für eine Richtextbox aktivieren und die Sprache auf eine Sprache setzen, die der Benutzer aus einem Dropdown ausgewählt hat. Im Moment teste ich es nur, indem ich die Richtextbox in XAML erstelle und dem XAML-Sprachattribut eine Sprache zur Verfügung stelle.Mehrsprachige Rechtschreibprüfung für WPF richttextbox

Ich habe zwei verschiedene Ressourcen gelesen und einer sagt, dass ich das Sprachattribut einstellen muss, und der andere sagt, dass ich das xml: lang Attribut setzen muss. Keine scheint zu funktionieren. Ich habe versucht, eines der beiden auf "es" für Spanisch zu setzen, und ich habe auch versucht, beide auf "es" zu setzen. Ich habe auch Französisch probiert, indem ich sie auf "fr-FR" setzte, ohne Erfolg. Das einzige, was passiert, ist, dass englische Wörter nicht markiert sind, aber die anderen Sprachwörter als falsch geschrieben markiert sind.

Ich lese auch, dass ich die Tastatursprache ändern muss. Dies wäre ein Problem für meine Anwendung, da die Sprache innerhalb der Anwendung im laufenden Betrieb gewechselt werden muss. Daher ist es ein Problem, dass der Endbenutzer zu seinen Tastatureinstellungen geht, nur damit die Rechtschreibprüfung funktioniert. Ich habe jedoch meine Tastatureinstellungen geändert und die Rechtschreibprüfung funktioniert immer noch nicht ordnungsgemäß. Diesmal markiert es nichts als falsch geschriebene, sogar falsch geschriebene englische Wörter.

Was fehlt mir?

Edit: einige Links zu meinen Referenzen über http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck(v=VS.100).aspx

http://www.dev102.com/2008/03/25/customize-spellcheck-on-wpf-text-controls/

http://books.google.com/books?id=clLc5BBHqRMC&pg=PA121&lpg=PA121&dq=C%23+wpf+enable+spellcheck&source=bl&ots=_r59pZRDjP&sig=yHMBc39EHKK5gaRMzxlBaEsY890&hl=en&ei=oXnIS8zWH4G88gaq48yGBw&sa=X&oi=book_result&ct=result&resnum=6&ved=0CBMQ6AEwBQ#v=onepage&q&f=false

+0

Just checking, dass Sie mit WPF 4.0 (ich nehme an, dies der Fall sein, wie Sie einen .net4-Tag) ... – Bermo

+0

Ja. Ich hatte es in meinem Post und jemand hat es rausgeschnitten und das Tag eingefügt. Ich hatte dies in 3.5 versucht und hatte ähnliche Ergebnisse erzielt. Allerdings hat die msdn-Seite gesagt, dass dies in 4.0 funktioniert, also habe ich letzte Woche 2010 heruntergeladen und installiert und habe immer noch das gleiche Problem. – JoeSharp

Antwort

1

Aus dem MSDN Forum:

„Erstens haben wir genau Komponenten brauchen wir für WPF Rechtschreibprüfung für Englisch/Spanisch/Deutsch/Französisch Sprachen zu ermöglichen

netfx 3?.5 SP1

Windows XP (Sprachpakete); Windows Vista (nicht im Lieferumfang enthalten); Windows 7 (Out of Box)

netfx 4 Windows XP (Language Packs); Windows Vista (Sprachpakete); Windows 7 (Sprachpakete)

Hier bedeutet "Language Packs", dass Sie entsprechende .NET Framework Language Packs installieren müssen. Wenn Sie beispielsweise die spanische Rechtschreibprüfung unter Windows XP und .NET Framework 3.5 SP1 aktivieren möchten, installieren Sie das spanische Sprachpaket .NET Framework 3.5 SP1. Wenn Sie die deutsche Rechtschreibprüfung für .NET Framework 4.0 aktivieren möchten, installieren Sie das .NET Framework 4.0 German Language Pack.

Die Language Packs für .NET Framework 4.0 werden in Kürze verfügbar sein.

Out-of-Box bedeutet, dass Sie nichts tun müssen und die Rechtschreibprüfung für die vier Sprachen automatisch verfügbar ist.

Wenn Sie Ihre Anwendung über ClickOnce bereitstellen, können Sie die entsprechenden Sprachpakete als Voraussetzungen einschließen. Wenn Sie Unterstützung für das Einbinden von Sprachpaketen in eine ClickOnce-Bereitstellung benötigen, können Sie das ClickOnce- und das Setup-Projektforum & verwenden.

Zweitens, wie steuert RichTextBox-Steuerelement die zu überprüfende Sprache?

Wenn ein Laufelement mit bestimmten Sprache markiert ist, Rechtschreibprüfung es benutzen werden:

uno dos tres cuatrro eins zwei drei Fourr

Zur Laufzeit der Rechtschreibprüfung verwendet die Eingabesprache, mit der die Wörter eingegeben wurden, wie im vorherigen Beitrag beschrieben.

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/06a2cc61-f2ae-4534-b35a-6c676bc2bcb2/?prof=required

+0

Also warten Sie einfach auf 4.0 Language Packs – majocha

+0

lol yup ... es sei denn Ihre App ist in 3.5. Unseres ist derzeit in 3.5, aber wir wollten es so schnell wie möglich auf 4.0 bringen. Wahrscheinlich noch passieren, mehrsprachige Rechtschreibprüfung ist nicht so hoch auf der Prioritätenliste. – JoeSharp

+1

Die .NET Framework 4.0-Sprachpakete sind verfügbar. Konnten Sie eine der anderen Sprachen neben Englisch/Spanisch/Deutsch/Französisch bekommen? Ich habe versucht, das russische Sprachpaket zu installieren und das Sprach-Tag zu setzen, und das scheint nicht zu funktionieren. – Luke

2

Ich bin nicht sicher, wo das Problem für Sie legt, aber das funktioniert auf jeden Fall auf meiner Maschine:

<StackPanel> 
     <TextBox SpellCheck.IsEnabled="True" 
      Language="{Binding SelectedItem.Content, ElementName=lg, ConverterCulture=en-us}"> 

      Turtle tortue tortuga Schildkröte 

     </TextBox> 
     <ComboBox Name="lg"> 
      <ComboBoxItem Selector.IsSelected="True">en-US</ComboBoxItem> 
      <ComboBoxItem>fr-FR</ComboBoxItem> 
      <ComboBoxItem>es-ES</ComboBoxItem> 
      <ComboBoxItem>de-DE</ComboBoxItem> 
     </ComboBox> 
    </StackPanel> 

Bearbeiten funktioniert in 3.5, nicht in 4.0. Interessant.

In 3.5 funktionieren alle unterstützten Wörterbücher. In 4.0 funktioniert die WPF-Rechtschreibprüfung nur für die englische Sprache.

Edit 2

Es ist scheint, dass es nur auf 3,5, weil ich auf Windows 7, so dass ich nicht brauchen Sprachpakete funktioniert.

Das andere Problem ist, dass es nur funktioniert, weil der Text voreingestellt ist. Jeder Text, den Sie eingeben, erhält seine Sprache von den aktuellen Benutzereinstellungen.

Ich denke, die Lösung für Ihr Problem wäre, den gesamten Inhalt zu durchlaufen und seine Spracheigenschaften jedes Mal zu ändern, wenn der Benutzer eine Sprache auswählt.

+0

mojocha, hast du die Sprachpakete installiert? Ich habe diese Frage im MSDN-Forum gepostet und der Moderator hat mir gesagt, dass ich die Sprachpakete für 3.5 herunterladen muss. Nachdem dies gemacht wurde und ungefähr eine Stunde getestet wurde, wird die Rechtschreibprüfung nur für 3.5 ausgeführt. Also funktioniert die Rechtschreibprüfung für mich in 4.0 in anderen Sprachen immer noch nicht, aber für Spanisch in 3.5, weil ich jetzt dieses Sprachpaket habe. Es funktioniert auch nur in einer bestimmten Sprache, sofern die Tastatur auf diese Sprache eingestellt ist. Wenn Sie also mit dem Tippen beginnen und die Tastatur auf Spanisch eingestellt ist, erfolgt eine Rechtschreibprüfung in Spanisch. – JoeSharp

+0

Wenn Ihre Tastatur auf Englisch eingestellt ist, wird eine Rechtschreibprüfung in englischer Sprache durchgeführt. So scheint es, die Sprache auf dem Niveau zu überprüfen. Jeder Standardtext wird in der geerbten Sprache überprüft. Wenn ich also meine RichTextBox auf language = "es" setze und hartcodierten Text einfüge, wird dies nicht nur zur Laufzeit, sondern auch im Designer-Fenster auf Spanisch überprüft. – JoeSharp

+0

Link: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/06a2cc61-f2ae-4534-b35a-6c676bc2bcb2/?prof=required – JoeSharp

Verwandte Themen