我正在尝试将公共属性的DisplayFormat设置为当前的cultureinfo日期时间格式。该类将用于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");
答案 0 :(得分: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
将导致日期的美国格式。请参阅here以获取解决方案,以确保考虑当前设置。
答案 1 :(得分:1)
像这样试过
public class Foo
{
[DataType(DataType.DateTime)]
public DateTime createDate { get; set; }
}
这将显示项目的日期基础文化