2010-05-05 19 views
1

Hey, désolé pour mon mauvais anglais ...Silverlight 4 comment formater une valeur décimale binded

J'ai une zone de texte très simple sur mon application sl4, comme ceci:

<TextBox Text="{Binding Source={StaticResource Valor}, Path=ValorReal, ValidatesOnExceptions=True, Mode=TwoWay, ValidatesOnDataErrors=True, StringFormat=\{0:c\}, NotifyOnValidationError=True}" /> 

et une classe comme:

public class Valor: INotifyPropertyChanged 
{ 
    double _valorReal; 
    public double ValorReal 
    { 
     get 
     { 
      return _valorReal; 
     } 
     set 
     { 
      _valorReal = value; 
      RaisePropertyChanged("ValorReal"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaisePropertyChanged(string property) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
     } 
    } 
} 

Je vis au Brésil, alors voici le séparateur décimal est « » et le chiffre de regroupement est, donc 1.000,50 $ est mille dollars et cinquante cents « ». Mais en utilisant l'exemple ci-dessus, si je chiffre 1000,50 sur la zone de texte, après je quitte le champ, il devient 100,050.00 $. Comment puis-je obtenir les paramètres corrects?

Le CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator ont les bonnes valeurs, mais silverlight les ignore sur ma fixation :(

J'ai essayé de mettre System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR"); là, mais, rien ne se passe ...

Répondre

0

Vous n'avez pas besoin d'inclure {0:}. dans la chaîne de format

{Binding Source={StaticResource Valor}, Path=ValorReal, ValidatesOnExceptions=True, Mode=TwoWay, ValidatesOnDataErrors=True, StringFormat=c, NotifyOnValidationError=True} 
+0

excusez-moi mais qu'est-ce que le "c" dans StringFormat = c veut dire? –

+0

Jetez un coup d'œil à la [Formatage numérique standard à partir de MSDN] (http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx). "C" est pour la monnaie. – m1m1k

+0

"C" ou "c" Devises Résultat: La valeur de la devise. Pris en charge par: Tous les types numériques. Spécificateur de précision: Nombre de chiffres décimaux. Spécificateur de précision par défaut: défini par System.Globalization.NumberFormatInfo. Plus d'informations: Le spécificateur de format de devise ("C"). 123.456 ("C", en-US) -> 123,46 $ 123,456 ("C", fr-FR) -> 123,46 € 123,456 ("C", ja-JP) -> ¥ 123 -123,456 ("C3", en-US) -> (123.456) -123.456 ("C3", fr-FR) -> -123.456 € -123.456 ("C3", ja-JP) -> - ¥ 123.456 – m1m1k