Ustawienie “Culture” w WPF

WPF mam jedną niedogodność – domyślnie wszelkie ustawienia regionalne interfejsu są ustawione na en-US. Oznacza to, że wszystkie domyślne konwertery również korzystają z ustawień en-US. Chcąc wyświetlić np. datę, prawdopodobnie pożądanym będzie przedstawienie daty polskiemu użytkownikowi w formacie dd-mm-yyyy oraz amerykańskiemu w mm-dd-yyyy. Niestety domyślnie właściwość UIElement::Language jest ustawiona na en-US.  Za pomocą prostego kodu możemy jednak zmienić metadane i ustawić prawidłową “kulturę”:

protected override void OnStartup(StartupEventArgs e)
{
    FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentCulture.IetfLanguageTag)));
    
    base.OnStartup(e);
}

Ustawienie prawidłowych ustawień regionalnych najlepiej umieścić w OnStartup ponieważ wystarczy to wykonać tylko raz – przy starcie aplikacji.

Leave a Reply

Your email address will not be published.