Domanda

Perché questa riga di codice

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

Output il risultato da $ xx.xx quando tutte le mie impostazioni regionali sono impostate nel Regno Unito. Mi aspetto che in uscita come £ xx.xx. Qualche idea? Ho provato diverse varianti del StringFormat tra cui StringFormat = {} {0: C}. Ma ancora ottenere lo stesso risultato

Grazie per lo sguardo.

È stato utile?

Soluzione

Non sono sicuro se questo è stato risolto in .NET 4, ma WPF ha mai preso in mano la cultura corrente durante il rendering cose come valuta o date. E 'qualcosa che considera una svista enorme, ma per fortuna è facilmente correggibile.

Nella classe App:

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

Vedere questa eccellente messaggio per ulteriori informazioni.

Altri suggerimenti

Lo faccio Language = "it-IT" nella finestra principale per es.

<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">

Quello che funziona per me:
1) In app.xaml esclusione OnStartup () e aggiungere - System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("et-EE");

2) Definire in XAML @ livello Window - xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"

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

Questo correttamente preleva ogni personalizzata Impostazioni internazionali. Anche se sto usando un creati manualmente CultureInfo nella prima fase, sono sicuro che è possibile passare in uno dei tipi statici - ad es. System.Globalization.CultureInfo.CurrentCulture (non ho provato, però ...)

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