wpf - DateTime no se muestra con el formato de cultura actual en Datagrid, ListView
mvvm (2)
Esto se debe a que el sistema vinculante utiliza la cultura definida por la propiedad FrameworkElement.Language
, que no coincide automáticamente con la cultura actual (lo cual es un poco tonto IMO, pero así son las cosas ...).
Afortunadamente, hay una forma sencilla de solucionarlo, solo debe sobrescribir los metadatos de la propiedad Language
en el constructor estático de su aplicación, como se muestra a continuación :
public partial class App : Application
{
static App()
{
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
}
En WPF estoy intentando vincular una propiedad de fecha a Datagrid, y si solo tengo la fecha Property binded como DateTime, puedo ordenarlo en la cuadrícula de datos.
Y aquí tengo que mostrar la fecha regional, si el usuario cambia las configuraciones de región e idioma, la aplicación debe mostrar el formato de hora resectada.
Aquí viene el Issue, cuando la fecha está en formato de cadena, se calza de acuerdo con la configuración de región, pero cuando la propiedad está en formato DateTime, la fecha se imprime en formato estadounidense en lugar de mostrarse con la configuración de región actual.
Entonces, si tengo formato de cadena, la clasificación por columna no funciona, y si está en formato DateTime, se convierte a configuración regional
La muestra de localización del marco de aplicación de WPF (WAF) muestra cómo resolver su problema.