在 WPF 中,我试图在 DataGrid
中绑定(bind)日期属性如果它绑定(bind)到 DateTime
,我只能排序属性(property)。
应用程序应以与用户的区域和语言设置相对应的格式显示日期。
问题是当日期是 string
属性,它根据区域设置显示,但是当属性绑定(bind)到 DateTime
日期格式默认为美国而不是正确的地区。
因此,如果它绑定(bind)到 string
属性按列排序不起作用,如果它绑定(bind)到 DateTime
属性,它不会转换为正确的区域。
最佳答案
这是因为绑定(bind)系统使用 FrameworkElement.Language
定义的区域性。属性,它不会自动匹配当前的文化(这有点傻 IMO,但就是这样......)。
幸运的是,有一个简单的方法,您只需要覆盖 Language
的元数据。应用程序静态构造函数中的属性,as shown here :
public partial class App : Application
{
static App()
{
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
}
关于wpf - DateTime 未在 Datagrid、ListView 中以当前区域性格式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630967/