【问题标题】:Silverlight ignoring CurrencyGroupSeparatorSilverlight 忽略 CurrencyGroupSeparator
【发布时间】:2011-04-19 14:00:09
【问题描述】:
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”。但是,不遵守组分隔符设置。即使我将它设置为“-”或任何它不起作用。

大问号?错误?

【问题讨论】:

    标签: silverlight localization culture


    【解决方案1】:

    我不确定您是否能够解决这个问题,但由于没有人回答,我会的。
    对于初学者,我不确定您的支持代码是否与表示层在同一线程中运行;可能不会,那是我相信 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}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多