2

我使用的日期時間顯示在我的Windows Phone 7應用程序的很多地方。默認的日期格式看起來很醜,我把它格式化爲這樣的東西。如何在整個應用程序中設置通用日期格式 - Silverlight/Windows Phone 7

<TextBlock Text="{Binding Date, StringFormat='MMM d, h:mm tt'}"/> 

與上面的代碼最明顯的問題是,我將不得不這樣做拷貝粘貼喜歡到處。所以,如果日期格式在某個地方發生變化,那麼我將不得不在相同的地方進行相同的操作。有沒有更好的方式來處理Silverlight/C#中的這個?

更好的是,是否有一種方法來覆蓋整個應用程序的Date.ToString(),以便我可以在那裏做格式化,我可以簡單地讓我的代碼像這樣(我問這個是因爲我做Ruby和Ruby這是可能的)

<TextBlock Text="{Binding Date}"/> 

如果兩者都不可能,請指導我解決這個問題。

回答

1

正如Anuraj提到的,ValueConverter可能是一個非常可行的解決方案。另一種方法是在您嘗試綁定的對象中爲日期字符串創建一個屬性。 I.e .:

public class Item 
{ 
    public Date Date { get; set; } 
    public string DateString 
    { 
     get { return "Today is: " + Date.Month + "/ + Date.Day; } 
    } 
} 

兩者都是可行的選擇,但ValueConverter使您的代碼更少的冗餘。另一種選擇是創建一種實用程序類,它保留所有轉換代碼(即日期對象的字符串表示形式 - public string DateToString(Date d))。

第三個選項是重寫Date.ToString()方法。做到這一點的方法就是從Date(稱之爲FDate例如)派生類,只是這樣做:

public class FDate : Date 
{ 
    public override string ToString() 
    { 
     StringBuilder sb = new StringBuilder(); 
     // create the string you'd like 
     return sb.ToString(); 
    } 
} 

編碼愉快!

+1

+1謝謝你一個整潔的書面答案.. – bragboy 2012-07-25 09:21:34

相關問題