2011-04-19 3 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 = " " 

Im essayant de faire:ignorant CurrencyGroupSeparator

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

Il définit la culture correctement et ajoute la "kr" qui est le symbole de la monnaie suédoise. Cependant, n'honore pas le paramètre de séparateur de groupe. Même si je le mets à "-" ou quoi que ce soit ne fonctionne pas.

Grand point d'interrogation? Punaise?

Répondre

0

Je ne suis pas sûr si vous étiez capable de contourner ce problème, mais puisque personne n'a répondu, je le ferai.
Pour commencer, je ne suis pas sûr que votre code de support s'exécute dans le même thread que la couche de présentation; probablement pas, je crois que Silverlight crée son propre fil visuel. En d'autres termes, la définition de l'ensemble des threads CultureInfo ne résoudra pas votre problème.

Il existe (au moins) deux façons de résoudre ce problème:
1. Jouez avec l'attribut StringFormat pour définir un format personnalisé.
2. Créez une propriété dynamique dans le code de support qui formatera la valeur pour vous. S'il vous plaît trouver cet exemple imparfait:

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

Et dans votre code XAML, vous n'avez pas besoin de spécifier le format, vous donc que faire:

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