有没有办法使用XAML for
Windows Phone 7格式化日期?
如果尝试使用:
<TextBlock Text="{Binding Date,StringFormat={}{0:MM/dd/yyyy}}" />
但是我收到错误:
在“绑定”类型中找不到属性“StringFormat”
在SL4内,这是可能的…
<TextBlock Text="{Binding Date,StringFormat='MM/dd/yyyy'}}"/>
在SL3内,您将需要使用IValueConverter.
public class DateTimeToStringConverter : IValueConverter { public object Convert(object value,Type targetType,object parameter,CultureInfo culture) { return String.Format("{0:MM/dd/yyyy}",(DateTime)value); } public object ConvertBack(object value,CultureInfo culture) { throw new NotImplementedException(); } }
如果你想要一个更强大的方法,你可以使用ConverterParameter.
public class DateTimeToStringConverter : IValueConverter { public object Convert(object value,CultureInfo culture) { if (parameter == null) return ((DateTime)value).ToString(culture); else return ((DateTime)value).ToString(parameter as string,culture); } public object ConvertBack(object value,CultureInfo culture) { throw new NotImplementedException(); } }
然后在您的XAML中,您将首先将转换器定义为资源…
<namespace:DateTimeToStringConverter x:Key="MyDateTimeToStringConverter"/>
然后引用它以及一个可接受的参数来格式化DateTime值…
<TextBlock Text="{Binding Date,Converter={StaticResource MyDateTimeToStringConverter},ConverterParameter=\{0:M\}}"/>