2013-02-21 16 views
5

Załóżmy, że mam numer 1234567.89. Liczba jest wyświetlana w ramce tekstowej WPF. Staram się stosować StringFormat atrybut do właściwości Text tak, że numer zostanie wyświetlony jak:Zmiana domyślnego separatora tysięcy i dziesiętnego w powiązaniu

1.234.567,89 

Jak widać, tysiąc i separatory dziesiętne są odwrócone od specyfikacji kultury niezmienny.

Próbowałem ustawić wiele kombinacji dla StringFormat, ale bez powodzenia. To jest najnowszy, który wymyśliłem:

Text="{Binding SomeBinding, StringFormat={}{0:#'.'##0','00}}" 

Ale wynik jest niepoprawny. Ponadto używanie opcji N2 lub zmiana kultury nie jest opcją. Chciałbym unikać konwerterów, jeśli to możliwe.

Czy istnieje sposób zmiany domyślnych separatorów za pośrednictwem XAML?

Odpowiedz

8

Nie musisz zmienić kultury. Wystarczy użyć String.Format z określonej kultury (de-DE powinno być w porządku):

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

wyjściowa: 9.164,32

Jeśli chcesz to zrobić w XAML, można spróbować:

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

myślę on próbuje zrobić wszystkie rzeczy w XAML, i nie widzę, jak można to zrobić bez użycia jakiegoś C# w miejscu, przynajmniej w formie niestandardowego konwertera. – Woodman

+0

Kombinacja 'StringFormat = N2, ConverterCulture = de' stworzy pożądane wyjście bez dodatkowego kodu. – Clemens

+0

@Clemens dzięki za komentarz. Nie mogę przetestować kodu, to była moja sugestia –

Powiązane problemy