2012-07-19 28 views
3

我試圖將公共屬性的DisplayFormat設置爲當前的cultureinfo日期時間格式。該類將用於Silverlight Datagrid。帶有CultureInfo的DisplayFormat DateTime

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

它說,只有該參數只能是恆定的,typeof運算參數...

任何想法?

更新,我試過Lukazoid解決方案,但Silverlight數據網格忽略數據註釋。由於本地化,datagrid列被添加在代碼隱藏中。

列如下:

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

回答

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以獲取解決方案,以確保您的當前設置得到考慮。

+0

好吧,它不工作,因爲我認爲。我正在使用silverlight上的datagrid中的類。我是否也必須爲datagrid列設置顯示格式? – float 2012-07-20 06:20:02

+0

它看起來silverlight datagrid忽略這個屬性,所以我會在datagrid列中使用格式字符串(我也覺得它優先在用戶界面中具有UI格式,而不是隱藏在代碼中) – Lukazoid 2012-07-20 07:13:42

+0

對於本地化,我要添加代碼隱藏的datagrid列而不是xaml。你知道嗎,如何添加這個字符串?看到我更新的帖子。 – float 2012-07-20 07:58:23

1

試過這樣

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

這將項目的日期基礎文化展示