Pregunta

¿Por qué esta línea de código

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

salida el resultado como $ xx, xx, cuando todos mis ajustes regionales se establecen en el Reino Unido. Espero que la salida como £ xx, xx. ¿Algunas ideas? He probado diferentes variaciones de la StringFormat incluyendo StringFormat = {} {0: C}. Pero aún así obtener el mismo resultado

Gracias por mirar.

¿Fue útil?

Solución

No estoy seguro si esto se ha solucionado en .NET 4, pero WPF nunca ha recogido la cultura actual cuando se representa cosas como moneda o fechas. Es algo que considero una supervisión masiva, pero por suerte se corrige fácilmente.

En su clase de aplicación:

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

Consulte este excelente poste para más información.

Otros consejos

hago Language = "en-GB" en la ventana principal por ejemplo.

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

Lo que funciona para mí:
1) En App.xaml OnStartup override () y añadir - System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("et-EE");

2) Definir en XAML @ nivel de la ventana - xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"

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

Este correctamente recoge cualquier costumbre Configuración regional. A pesar de que estoy usando un creados manualmente CultureInfo en el primer paso, estoy seguro de que es posible pasar de uno de los tipos estáticos - por ejemplo. System.Globalization.CultureInfo.CurrentCulture (no he probado aunque ...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top