我正在使用Windows Phone 7应用程序中很多地方显示的日期时间。默认的日期格式看起来很丑,我把它格式化为这样的东西。
<TextBlock Text="{Binding Date, StringFormat='MMM d, h:mm tt'}"/>
上面代码的明显问题是我必须像往常一样进行粘贴复制。因此,如果日期格式在某个地方发生变化,那么我将不得不在所有地方进行冗余。有没有更好的方法在Silverlight / C#中处理它?</ p>
更好的是,有没有办法覆盖整个应用程序的Date.ToString(),以便我可以在那里进行格式化,我可以简单地让我的代码像这样(我问这个因为我做Ruby和Ruby这个是可能的)
<TextBlock Text="{Binding Date}"/>
如果两者都不可能,请指导我解决这个问题。
答案 0 :(得分:3)
ValueConverter可能是?
答案 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();
}
}
快乐的编码!