具有CultureInfo DateTime的DisplayFormat

flo*_*oat 4 c# localization data-annotations

我正在尝试将公共属性的DisplayFormat设置为当前的cultureinfo日期时间格式.该类将用于Silverlight Datagrid.

    [DisplayFormat(DataFormatString=CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToString())]
    public DateTime createDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

它说,只有参数只能是常数和typeof参数...

有任何想法吗?

更新,我尝试了Lukazoid解决方案,但Silverlight数据网格忽略了数据注释.由于本地化,datagrid列在代码隐藏中添加.

该列如下所示:

        DataGridTextColumn tcCreateDate = new DataGridTextColumn();
        tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
        tcCreateDate.Binding = new Binding("createDate");
Run Code Online (Sandbox Code Playgroud)

Luk*_*oid 5

属性值必须是常量或typeof语法的结果.

如果要对当前区域性使用短日期格式,请使用以下格式字符串:

[DisplayFormat(DataFormatString = "{0:d}")]
Run Code Online (Sandbox Code Playgroud)

更新

我可以看到你添加的更新代码DataGridTextColumn,试试这个添加StringFormat:

DataGridTextColumn tcCreateDate = new DataGridTextColumn();
tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
tcCreateDate.Binding = new Binding("createDate") { StringFormat = "{0:d}" };
Run Code Online (Sandbox Code Playgroud)

默认情况下,silverlight使用en-US作为所有绑定的当前文化(无论您的系统设置如何),这意味着StringFormat将生成美国格式的日期.请参阅此处以获取解决方案,以确保将当前设置考虑在内.