Question

J'ai un double, par exemple

double d = 4.323d;

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

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, non 4.00.

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

je pouvais régler le DefaultFormat à #.## si je pouvais changer le StringFormat, mais je veux le faire par CultureInfo

Était-ce utile?

La solution

Je vais 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 ajoutez ceci à son constructeur: -

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

Maintenant un liant avec StringFormat=#.## utilisera le séparateur décimal approprié pour la culture actuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top