Weird TextBox Probleme mit .NET 4.5 - nein '.' dürfen

8

Ich habe ein wirklich seltsames Problem mit .NET 4.5. Heute hat mir ein User gesagt, dass er keine Zahlen in eine Textbox eingeben kann (zB "2.75"). Die Textbox akzeptiert einfach nicht ".", Das ist der korrekte "Trenner" für floatende Zahlen in meiner Kultur ("de-CH").

Dieses Problem trat auf, nachdem ich die Software mit .NET 4.5 kompiliert hatte (früher war es 4.0).

Ich kann diesen Fehler reproduzieren. Alle anderen Textfelder in der Anwendung funktionieren einwandfrei. Das Textfeld ist ein reguläres WPF-Steuerelement. Kein schickes benutzerdefiniertes Steuerelement oder ähnliches.

Noch einmal: Die Textbox akzeptiert nur '.' als ein Charakter. Es scheint, dass es es völlig ignoriert. Jedes andere Zeichen (auch spezielle wie "@") sind in Ordnung. Das Neukompilieren der Anwendung auf .NET 4.0 löst das Problem.

Die xaml für das Textfeld ist:

%Vor%

Definition von ProcessHours:

%Vor%

Hours_TextChanged ist:

%Vor%

UpdateHoursValidity () blendet nur eine Textnachricht unterhalb der eigentlichen Textbox ein. Es ist in keiner Weise mit dem "defekten" Textfeld verbunden:

%Vor%

Also nichts Besonderes hier.

Was ich bisher versucht habe: - Entfernen der Textbox, Neukompilieren, erneutes Hinzufügen der Textbox, Neukompilieren - & gt; gleiche Situation

Es gibt keine Nachricht in der Debugconsole, wenn ich versuche, ein "." einzugeben.

Irgendwelche Ideen zu diesem Thema?

Vielen Dank im Voraus!

    
Mathew 27.08.2013, 13:00
quelle

2 Antworten

6

Dies ist ein ziemlich bekanntes (und dokumentiertes) Problem in Bezug auf TextBox -Steuerelemente und Datengebundene float -Werte. Sie können dieses Problem beheben, indem Sie% StringFormat zu Binding hinzufügen:

%Vor%

Passen Sie das Format an Ihre Situation an. Sie finden weitere Formate im benutzerdefinierten numerischen Format Strings Post bei MSDN.

    
Sheridan 27.08.2013, 13:13
quelle
2

Es gibt eine detaillierte Diskussion der .NET 4.5-Änderung, die dieses Problem auf der Microsoft Connect-Website verursacht: Ссылка

Zusätzlich zur Problemumgehung StringFormat können Sie auch eine Delay für die Bindung festlegen.

    
Govert 14.01.2015 13:53
quelle

Tags und Links