Silverlight игнорируя CurrencyGroupSeparator - PullRequest
1 голос
/ 19 апреля 2011
Thread.CurrentThread.CurrentCulture = New CultureInfo("sv-SE")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("sv-SE")

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyGroupSeparator = " "
Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencyGroupSeparator = " "

Я пытаюсь сделать:

   <TextBlock Text={Binding decimalValue, StringFormat=c2}/>

Он правильно устанавливает культуру и добавляет "kr", который является символом шведской валюты.Однако не учитывает настройку разделителя группы.Даже если я установлю его на «-» или что-то не работает.

Большой вопросительный знак?Ошибка?

1 Ответ

0 голосов
/ 20 апреля 2011

Я не уверен, что вы смогли обойти эту проблему, но поскольку никто не ответил, я отвечу.
Для начала, я не уверен, что ваш код поддержки работает в том же потоке, что и уровень представления;вероятно нет, то есть я считаю, что Silverlight создает собственную визуальную нитьДругими словами, настройка всей нити CultureInfo не решит вашу проблему.

Есть (как минимум) два способа решения этой проблемы:
1. Поиграйте с атрибутом StringFormat, чтобы установить пользовательский формат.
2. Создайте динамическое свойство в резервном коде, которое отформатирует значение для вас.Пожалуйста, найдите этот несовершенный пример:

public decimal Quote { get; set; }

// Formats value of Quote property
public string FormattedQuote
{
    get
    {
        CultureInfo swedishCulture = new CultureInfo("sv-SE");
        swedishCulture.NumberFormat.CurrencyGroupSeparator = " ";
        return Quote.ToString("c2", swedishCulture);
    }
}

И в вашем коде XAML вам не нужно указывать формат, поэтому вы бы только сделали это:

<TextBlock Name="textBlock1" Text="{Binding FormattedQuote}" DataContext="{Binding ElementName=textBlock1}" />
...