Domanda

Ho una doppia, ad esempio

double d = 4.323d;

E voglio visualizzarlo in un TextBlock su un'applicazione Silverlight 4, ma il display dovrebbe essere questo:

4.32

E non posso cambiare la StringFormat sulla sorta di legame.

L'eccezione è che se il numero è questo:

double d2 = 4d;

Poi si dovrebbe visualizzare

4, non 4.00.

E il peggio eccezione è che si dovrebbe prendere in considerazione la lingua dell'interfaccia utente corrente, il che implica che se l'applicazione viene distribuito negli Stati Uniti si dovrebbe usare un . come separatore decimale e in Europa dovrebbe usare un , (bene non nel Regno Unito, ma si ottiene il punto ...)

ho potuto impostare la DefaultFormat a #.## se fossi in grado di cambiare lo StringFormat, ma voglio farlo attraverso CultureInfo

È stato utile?

Soluzione

ho intenzione di assumere per il momento che si crede non è possibile utilizzare StringFormat nel legame perché non usa CultureInfo. Stando così aggiungere questi due usings al tuo codice di controllo utente dietro: -

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

e quindi aggiungere questo al suo costruttore: -

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

Ora un legame con StringFormat=#.## utilizzerà il separatore decimale appropriata per la cultura corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top