2

J'ai un double, par exempleformat de chaîne par défaut dans Silverlight

double d = 4.323d; 

Et je veux afficher dans un TextBlock sur une application Silverlight 4, mais l'affichage doit être le suivant:

4.32

Et je ne peux pas changer le StringFormat sur la liaison que ce soit.

L'exception est que si le nombre est le suivant:

double d2 = 4d; 

Ensuite, il devrait afficher

4, pas 4.00.

Et la pire exception est qu'il devrait prendre en compte la culture de l'interface utilisateur actuelle, ce qui implique que si l'application est déployée aux États-Unis, elle doit utiliser un . comme séparateur décimal, et en Europe , (enfin pas au Royaume-Uni, mais vous obtenez le point ...)

je pourrais définir le DefaultFormat à #.## si je pouvais changer le StringFormat, mais je veux le faire à travers CultureInfo

+0

Cela peut être utile si vous sauvegardez l'instruction "Et je ne peux pas modifier le StringFormat sur la liaison" car cela ressemble à quelque chose d'étrange qui peut affecter la solution que vous pourriez utiliser. – AnthonyWJones

+0

Aussi la spécification est un peu faible quel est le format pour 4.1? – AnthonyWJones

Répondre

5

Je suis va supposer pour le moment que vous croyez que vous ne pouvez pas utiliser StringFormat dans la liaison, car il n'utilise pas CultureInfo. Cela étant le cas ajouter ces deux usings à votre code de contrôle de l'utilisateur derrière: -

using System.Windows.Markup; 
using System.Threading; 

puis l'ajouter à son constructeur: -

Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name); 

maintenant une reliure avec StringFormat=#.## utilisera le séparateur décimal approprié pour la culture actuelle.

Questions connexes