2011-04-19 53 views
1
Thread.CurrentThread.CurrentCulture = New CultureInfo("sv-SE") 
Thread.CurrentThread.CurrentUICulture = New CultureInfo("sv-SE") 

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

我试着做:的Silverlight忽略CurrencyGroupSeparator

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

它正确地设置了文化,并增加了“KR”,这是瑞典的货币符号。但是,不遵守组分隔符设置。即使我将它设置为“ - ”或其他任何不起作用的东西。

大问号?错误?

回答

0

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