W moim przypadku:Use "prawdziwy" CultureInfo.CurrentCulture w WPF Binding, nie CultureInfo z IetfLanguageTag
Mam TextBlock Binding do właściwości typu DateTime. Chcę, aby był wyświetlany zgodnie z ustawieniami regionalnymi użytkownika.
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
ja ustawienie właściwości języka jako WPF XAML Bindings and CurrentCulture Display mówi:
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
Ale z tej linii kodu to po prostu wyświetla tekst jako formatu domyślnego CultureInfo z IetfLanguageTag z CurrentCulture mówi, a nie jako efektywna wartość wybrana w ustawieniach regionu systemowego mówi:
(np. dla "DE-DE" dd.MM.rrrr jest używany zamiast wybierz ed yyyy-MM-dd)
Czy istnieje sposób wiązania wykorzystuje poprawny format bez definiowania ConverterCulture na każdy wiążąca?
W kodzie
string.Format("{0:d}",Date);
wykorzystuje odpowiednie ustawienia kultury.
edit:
inny sposób, który nie działa zgodnie z oczekiwaniami (jak this.Language = ... robi):
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
i
<Binding Source="{x:Static glob:CultureInfo.CurrentCulture}"
Path="IetfLanguageTag"
ConverterCulture="{x:Static glob:CultureInfo.InvariantCulture}" />
Sprawdź następujące elementy: http://stackoverflow.com/questions/2764615/wpf-stringformat-0c-showing-as-dollars –
@Pavlo: odpowiedź na to pytanie wykorzystuje również IetfLanguageTag do uzyskania informacji CultureInfo. –