views:

4470

answers:

4

I'm having some trouble with the output of a DateTime value. My computer's current culture is set to de-AT (Austria).

The following code

string s1 = DateTime.Now.ToString("d");
string s2 = string.Format("{0:d}", DateTime.Now);

results in s1 and s2 both having the correct value of "30.06.2009".

But when using the same format in XAML

    <TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat=d}"/>

the output is `"6/30/2009". It seems the XAML StringFormat ignores the current culture settings. This happens on both Vista and XP.

I don't want to specify a custom format, because the output should be formatted in the user's preferred culture setting.

Anybody with the same problem? Is this a bug in WPF?

A: 

Try that :

<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat={}{0:d}}"/>
Thomas Levesque
+3  A: 

Please see my answer on StringFomat Localization problem

loraderon
Thanks, that did the trick! :)
Christian Hubmann
If you override default settings it doesnt help
Parhs
+4  A: 

Wrote about it some time ago on my blog:

This will tell you how to get WPF to use the right culture:

http://www.nbdtech.com/blog/archive/2009/02/22/wpf-data-binding-cheat-sheet-update-the-internationalization-fix.aspx

This will change the WPF culture on the fly when you modify the settings in the control panel:

http://www.nbdtech.com/blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx

Nir
A: 

The label uses the Culture. Not Textblock

david