如何在整个应用程序中设置通用日期格式 - Silverlight / Windows Phone 7

时间:2012-07-25 07:09:47

标签: c# silverlight windows-phone-7 datetime silverlight-toolkit

我正在使用Windows Phone 7应用程序中很多地方显示的日期时间。默认的日期格式看起来很丑,我把它格式化为这样的东西。

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

上面代码的明显问题是我必须像往常一样进行粘贴复制。因此,如果日期格式在某个地方发生变化,那么我将不得不在所有地方进行冗余。有没有更好的方法在Silverlight / C#中处理它?<​​/ p>

更好的是,有没有办法覆盖整个应用程序的Date.ToString(),以便我可以在那里进行格式化,我可以简单地让我的代码像这样(我问这个因为我做Ruby和Ruby这个是可能的)

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

如果两者都不可能,请指导我解决这个问题。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

正如Anuraj所说,ValueConverter可能是一个非常可行的解决方案。另一种方法是在您尝试绑定的对象中为日期字符串创建属性。即:

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();
    }
}

快乐的编码!