4

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

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

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

有任何想法吗?

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

该列如下所示:

        DataGridTextColumn tcCreateDate = new DataGridTextColumn();
        tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
        tcCreateDate.Binding = new Binding("createDate");
4

2 回答 2

5

属性值必须是常量或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 作为所有绑定的当前区域性(无论您的系统设置如何),这意味着StringFormat将生成美国格式的日期。请参阅此处获取解决方案,以确保考虑到您的当前设置。

于 2012-07-19T14:12:04.153 回答
1

像这样试过

public class Foo
{
    [DataType(DataType.DateTime)]
    public DateTime createDate { get; set; }
}

这将与您的项目的日期基础文化一起显示

于 2012-07-19T14:03:18.603 回答