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

相关问题