2

我在我的 Windows Phone 7 应用程序的很多地方使用显示的日期时间。默认日期格式看起来很难看,我将其格式化为这样的格式。

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

上面代码的一个明显问题是我将不得不像任何地方一样进行复制粘贴。所以,如果日期格式在某个地方发生了变化,那么我将不得不在任何地方重复地做同样的事情。在 Silverlight/C# 中是否有更好的方法来处理这个问题?

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

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

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

4

2 回答 2

1

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

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

快乐编码!

于 2012-07-25T08:52:24.127 回答