En WPF 3.5SP1 utilizo la última característica StringFormat en DataBindings:
<TextBlock Text="{Binding Path=Model.SelectedNoteBook.OriginalDate, StringFormat='f'}"
FontSize="20" TextTrimming="CharacterEllipsis" />
El problema al que me enfrento es que la fecha siempre está formateada en inglés ... ¿aunque mi sistema está en francés? ¿Cómo puedo forzar que la fecha siga a la fecha del sistema?
wpf
datetime
localization
Pavel Anikhouski
fuente
fuente
Respuestas:
De la creación de un asistente internacionalizado en WPF
fuente
Defina el siguiente espacio de nombres xml:
Ahora he aquí esta fantástica solución:
Soy muy consciente de que esta no es una solución global y la necesitará en cada uno de sus enlaces, pero seguramente eso es un buen XAML. Hasta donde yo sé, la próxima vez que se actualice el enlace, se utilizará el correcto
CultureInfo.CurrentCulture
o lo que haya proporcionado.Esta solución actualizará inmediatamente sus enlaces con los valores correctos, pero parece una gran cantidad de código para algo tan raro e inofensivo.
fuente
Solo quería agregar que la respuesta de loraderon funciona muy bien en la mayoría de los casos. Cuando pongo la siguiente línea de código en mi App.xaml.cs, las fechas en mis TextBlocks están formateadas en la cultura correcta.
Digo 'la mayoría de los casos' Por ejemplo, esto funcionará de inmediato:
... pero al usar Run's en un TextBlock, DateTime se formatea en la cultura predeterminada.
Para que esto funcione, necesitaba la respuesta de Gusdor , es decir, agregar ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} al enlace.
Espero que esta respuesta adicional sea de utilidad para alguien.
fuente
Simplemente inserte el acceso directo de la cultura a la etiqueta de nivel superior:
p.ej:
fuente
DatePicker
haga su trabajo, así que esta fácil solución se ¡Rápidamente de vuelta a la pista!Como ya se indicó, XAML tiene como valor predeterminado la referencia cultural invariante (en-US), y puede usar
para establecer la referencia cultural a la referencia cultural predeterminada para el idioma de la referencia cultural actual. Pero el comentario es incorrecto; esto no usa la cultura actual, ya que no verá ninguna personalización que el usuario pueda haber hecho, siempre será la predeterminada para el idioma.
Para utilizar realmente la cultura actual con personalizaciones, deberá configurar el
ConverterCulture
junto conStringFormat
, como encon el
gl
definido como un espacio de nombres global en su elemento raízfuente
binding.ConverterCulture = System.Globalization.CultureInfo.CurrentCulture;
Si necesita cambiar el idioma mientras el programa se está ejecutando, puede simplemente cambiar la propiedad Language en su elemento raíz (no estoy seguro de si esto tiene un efecto instantáneo o si el subelemento tiene que ser recreado, en mi caso esto funciona al menos)
fuente
El código completo para cambiar la localización también en elementos como
<Run />
este:fuente
Si desea cambiar la información cultural en tiempo de ejecución, puede usar un comportamiento (ver más abajo)
fuente
Si está trabajando en código en lugar de XAML, puede configurar ConverterCulture de la siguiente manera:
Felicitaciones a @KZeise por señalar la sutil diferencia entre usar la definición de cultura predeterminada y usar la definición de cultura personalizada del usuario.
fuente
Use Label (incluida Cultture) y no texblock
fuente