Отрицательный номер валюты XAML - PullRequest
10 голосов
/ 30 октября 2010

У меня небольшая проблема с текущим форматом моего отрицательного номера валюты.Вот снимок экрана, возобновляющий мою ситуацию.

  1. Вот как я использую StringFormat в своем связывании.(Кстати, я пробовал только {0: C})
  2. Как и ожидалось
  3. Текущие настройки моего компьютера для отрицательной валюты с номером 4.
  4. Результат, когда я 'я запускаю мое приложение

alt text

Почему результат не -0,08 $?

Есть идеи, как мне поступить?

Спасибо за ваше время.

ОБНОВЛЕНИЕ:

Я попытался решить проблему с конвертером, вот результат:

  • Я обнаружил, что Thread.CurrentThread.CurrentUICulture не совпадает с Thread.CurrentThread.CurrentCulture, поэтому я исправил его в своем App.xaml.cs.К сожалению, тот же результат.
  • Я пытался отобразить свои значения через конвертер, чтобы посмотреть, смогу ли я отладить проблему.Дело в том, что культура, полученная по параметрам метода Convert, была в порядке, но ее CurrentNegativePattern не был таким же, как в Thread.CurrentThread.CurrentCulture.Это, вероятно, причина, почему у меня есть эта проблема.на данный момент я буду использовать это: return ((double)value).ToString("C2", Thread.CurrentThread.CurrentCulture); в методе Convert моего конвертера.

Ответы [ 2 ]

1 голос
/ 31 октября 2010

Попробуйте изменить CurrentCulture на CurrentUICulture:

FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement),
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag))
);

Обратите внимание, что здесь могут не использоваться ваши региональные настройки. Объект CultureInfo описывает ваши региональные настройки, но то, что вы делаете с IetfLanguageTag, - это извлечение в конкретную культуру. Эта культура не имеет изменений, которые вы внесли в ваши региональные настройки.

Кроме того, вы можете взглянуть на параметр ConvertCulture привязки. Это на самом деле занимает CultureInfo.

0 голосов
/ 09 ноября 2010
...