I have a little problem with the current format of my negative currency number. Here's a screenshot resuming my situation.
- This is how I'm using the StringFormat in my binding. (BTW, I tried only {0:C})
- As expected
- The current settings of my computer for the negative currency number 4.
- The result when I'm running my application
Why the result isn't -0,08 $ ?
Any ideas of how I should proceed?
Thanks for your time.
UPDATE:
I tried to resolve the problem with a converter, here's the result :
- I found that the
Thread.CurrentThread.CurrentUICulture
was not the same as theThread.CurrentThread.CurrentCulture
, so I fixed it in my App.xaml.cs. Unfortunately, same result. - I tried to display my values through a converter to see if I could debug the problem. The fact is that the culture received in the parameters of the
Convert
method was okay, but its开发者_C百科CurrentNegativePattern
was not the same as in theThread.CurrentThread.CurrentCulture
. That's probably the reason why I have this problem. for the moment, I'll use this :return ((double)value).ToString("C2", Thread.CurrentThread.CurrentCulture);
in theConvert
method of my converter.
Try changing the CurrentCulture
to CurrentUICulture
:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag))
);
Please note though that this may not use your regional settings. The CultureInfo
object does describe your regional settings, but what you're doing with the IetfLanguageTag
is extracting that to a specific culture. That culture does not have the adjustments you've made to your regional settings.
Alternatively, you can have a look at the ConvertCulture
option of the binding. This actually does take a CultureInfo
.
Take a look at this
http://msdn.microsoft.com/en-us/library/ms745650.aspx
http://msdn.microsoft.com/en-us/library/ms788718.aspx
精彩评论