2013-02-21 6 views
5

Nehmen wir an, ich habe eine Nummer 1234567.89. Die Nummer wird in einem WPF TextBlock angezeigt. Ich versuche, anzuwenden StringFormat Attribut auf die Text Eigenschaft, so dass die Zahl würde wie angezeigt:Ändern der Standard-Tausender-Trennzeichen in einer Bindung

1.234.567,89 

Wie Sie sehen können, die tausend und Dezimaltrennzeichen aus der invarianten Kultur Spezifikation invertiert werden.

Ich habe versucht, zahlreiche Kombinationen für die StringFormat, aber ohne Erfolg. Dies ist die neueste, die ich kam:

Aber die Ausgabe ist nicht korrekt. Auch die Verwendung von N2 oder die Änderung der Kultur ist keine Option. Ich möchte Konverter nach Möglichkeit vermeiden.

Gibt es eine Möglichkeit, die Standardtrennzeichen durch XAML zu ändern?

Antwort

8

Sie müssen nicht ändern die Kultur. Verwenden Sie einfach String.Format mit bestimmten Kultur (de-DE sollte in Ordnung sein):

string output = String.Format(new CultureInfo("de-DE"), "{0:N}", yourDoubleValue); 

Ausgang: 9.164,32

Wenn Sie es in XAML tun möchten, könnten Sie versuchen:

Text="{Binding SomeBinding, StringFormat={}{0:N}, ConverterCulture=de-DE}" 
+0

Ich denke, Er versucht, all die Dinge in XAML zu tun, und ich sehe nicht, wie dies getan werden kann, ohne C# an Ort und Stelle zu bringen, zumindest in Form eines benutzerdefinierten Konverters. – Woodman

+0

Die Kombination 'StringFormat = N2, ConverterCulture = de' würde die gewünschte Ausgabe ohne zusätzlichen Code erzeugen. – Clemens

+0

@Clemens danke für den Kommentar. Ich kann den Code nicht testen, es war mein Vorschlag –

Verwandte Themen