2011-10-21 68 views
3

我在我的Silverlight應用程序中的數據網格中有一個日期列。我需要時間以24小時的格式顯示。要做到這一點我已經修改在Application_Startup事件的UI文化是這樣的:Silverlight UI文化

CultureInfo cinf = Thread.CurrentThread.CurrentUICulture.Clone() as CultureInfo; 
    DateTimeFormatInfo f = cinf.DateTimeFormat.Clone() as DateTimeFormatInfo; 
    System.Globalization.DateTimeFormatInfo df = new System.Globalization.DateTimeFormatInfo(); 
    string format = "MM/dd/yyyy HH:mm:ss"; 
    f.FullDateTimePattern = format; 
    cinf.DateTimeFormat = f; 
    Thread.CurrentThread.CurrentUICulture = cinf; 

但UI總是拿起我的OS在我的區域設置指定的格式DATATIME。 任何指針?

回答

0

嘗試設置CurrentCulture,以及,那就是:

Thread.CurrentThread.CurrentCulture = cinf; 
+0

它有幫助嗎? – andrew

+0

是的我已經嘗試設置CurrentCulture和CurrentUICulture,但仍然使用12小時格式呈現UI。有趣的是,當我在視圖模型類上放置一個斷點時,格式顯示爲24小時格式。 ! – Avinash

0

,豈不是更好地界定療法所要求的格式上結合自身?喜歡的東西: -

<sdk:DataGridTextColumn Header="SomeDate" Binding="{Binding SomeDate, StringFormat={}{0:MM/dd/yyyy HH:mm:ss}}" /> 

之所以你的代碼不工作是由XAML中加載控件所使用的CultureInfo由控制加載的XAML的Language屬性定義。我不認爲在這種情況下有辦法提供自定義CultureInfo

+0

我有一個絕對的要求,我返​​回一個DateTime對象,我不能使用返回字符串的綁定轉換器。我在依賴列的數據類型的每列上都有過濾器。我已經嘗試了XAML中的「語言」屬性,並且基於我設置的語言反映了文化,但即使是該語言的設置也可以從操作系統設置中獲取?有任何其他方法可以覆蓋此設置嗎? ? – Avinash

+0

@avinash:通常情況下,通過「ICollectionView」的實現過濾,這將適用於任何綁定發生之前的傳入對象集。除此之外,我不認爲'StringFormat'適用,除非被賦值的目標屬性要求'String'(對於'DataGridTextColumn'這是真的)。也許a)你應該給它一個去; b)包括你的xaml和代碼的更多細節,如果它沒有。 – AnthonyWJones