Question

Pourquoi cette ligne de code

<TextBlock Text="{Binding Net, StringFormat=c}"/>

Sortie le résultat comme xx.xx $ lorsque tous mes paramètres régionaux sont définis au Royaume-Uni. Je pense à la sortie comme £ xx.xx. Des idées? J'ai essayé différentes variations du StringFormat y compris StringFormat = {} {0: C}. Mais toujours obtenir le même résultat

Merci pour la recherche.

Était-ce utile?

La solution

Je ne sais pas si cela a été corrigé dans .NET 4, mais WPF n'a jamais repris la culture actuelle lors du rendu des choses comme monnaie ou dates. C'est quelque chose que je considère un oubli massif, mais heureusement, est facilement corrigé.

Dans votre classe App:

protected override void OnStartup(StartupEventArgs e)
{
    FrameworkElement.LanguageProperty.OverrideMetadata(
        typeof(FrameworkElement),
        new FrameworkPropertyMetadata(
            XmlLanguage.GetLanguage(
            CultureInfo.CurrentCulture.IetfLanguageTag)));
    base.OnStartup(e);
 }

Voir cet excellent post pour plus d'informations.

Autres conseils

Je ne Language = "fr-FR" dans la fenêtre principale par exemple.

<Window x:Class="AllocateWPF.Vouchers"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test" Height="692" Width="1000" Language="en-GB">

Ce qui fonctionne pour moi:
1) En app.xaml override OnStartup () et ajouter - System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("et-EE");

2) Définir en XAML @ niveau de fenêtre - xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"

3) Dans XAML - <TextBox Text="{Binding Path=Price, StringFormat='{}{0:C}', ConverterCulture={x:Static sysglb:CultureInfo.CurrentUICulture}}" />

correctement prend le relais tout les paramètres régionaux . Bien que j'utilise un créé manuellement CultureInfo dans la première étape, je suis sûr qu'il est possible de passer dans l'un des types de statiques - par exemple. System.Globalization.CultureInfo.CurrentCulture (je ne l'ai pas testé mais ...)

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