Click here to Skip to main content
15,885,998 members
Articles / Desktop Programming / WPF

WPF Default Binding Format Culture

Rate me:
Please Sign up or sign in to vote.
4.75/5 (4 votes)
20 Aug 2012CPOL 21.5K   1   4
WPF Default Binding Format Culture

WPF formats non-string objects to a string using a fixed/hardcoded culture (en-US) regardless of the current culture (as in Thread.CurrentThread.CurrentCulture / CultureInfo.CurrentCulture).

Suppose you have a simple DataContext (ViewModel) like so:

C#
public class Data
{
    public DateTime Now
    {
        get
        {
             return DateTime.Now;
        }
    }

    public string NowText
    {
        get
        {
              return DateTime.Now.ToString();
        }
    }
}

Binding an instance of `Data` to a view, with two TextBlocks, each of which using ‘Now’ and ‘NowText’ respectively will yield different results if your CurrentCulture is NOT en-US.

Working on an internationalizable WPF app, I’ve found out this sad truth. I don’t fully understand why this happens but I’ve found a way to “fix it”.

Somewhere before any piece of UI is shown on the screen (for example in App.xaml.cs in ApplicationStartup), just place this little piece of code:

C#
FrameworkElement.LanguageProperty.OverrideMetadata(
  typeof(FrameworkElement),
  new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

It sets for any FrameworkElement (TextBlock and Label are included) the formatting culture to the current culture. Of course, you might need to change it again if the current culture changes (for example, an on-the-fly UI language changes).


This article was originally posted at http://blog.andrei.rinea.ro?p=119

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) IBM, Business Analytics
Romania Romania
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
sditt16-May-13 2:27
sditt16-May-13 2:27 
GeneralMy vote of 4 Pin
Adam Wojnar6-Oct-12 9:03
Adam Wojnar6-Oct-12 9:03 
GeneralRe: My vote of 4 Pin
Andrei Ion Rînea6-Oct-12 21:47
Andrei Ion Rînea6-Oct-12 21:47 
QuestionAlmost... Pin
Richard Deeming31-Aug-12 2:54
mveRichard Deeming31-Aug-12 2:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.