我正在尝试将公共(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/