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

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

它说,只有参数只能是常量和类型的参数......

有任何想法吗?

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

该列如下所示:
        DataGridTextColumn tcCreateDate = new DataGridTextColumn();
        tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
        tcCreateDate.Binding = new Binding("createDate");

最佳答案

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

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

[DisplayFormat(DataFormatString = "{0:d}")]

更新

我可以看到你更新的代码来添加 DataGridTextColumn ,试试这个来添加 StringFormat :
DataGridTextColumn tcCreateDate = new DataGridTextColumn();
tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
tcCreateDate.Binding = new Binding("createDate") { StringFormat = "{0:d}" };

默认情况下,silverlight 使用 en-US 作为所有绑定(bind)的当前区域性(无论您的系统设置如何),这意味着 StringFormat 将产生美国格式的日期。请参阅 here 以获取确保考虑您当前设置的解决方案。

关于c# - DisplayFormat 与 CultureInfo DateTime,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11562512/

10-12 04:10