开发者

Silverlight ignoring CurrencyGroupSeparator

Thread.CurrentThread.CurrentCulture = New CultureInfo("sv-SE")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("sv-SE")

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

Im trying to do:

   <Text开发者_如何学CBlock Text={Binding decimalValue, StringFormat=c2}/>

It sets the culture properly and adds the "kr" which is the swedish currency symbol. However, doesnt honor the group separator setting. Even if I set it to "-" or whatever it doesnt work.

Big questionmark? Bug?


I am not sure if you were able to work around this problem, but since nobody answered, I will.
For starters, I am not sure if your backing code runs in the same thread as presentation layer; probably not, that is I believe Silverlight creates its own visual thread. In other words setting thread-wide CultureInfo will not resolve your problem.

There are (at least) two ways to resolve this issue:
1. Play with StringFormat attribute to set custom format.
2. Create dynamic property in the backing code which will format the value for you. Please find this imperfect example:

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);
    }
}

And in your XAML code, you do not need specify format, so you would only do this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜