В 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, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Если вам нужен более надежный подход, вы можете использовать ConverterParameter
.
public class DateTimeToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter == null)
return ((DateTime)value).ToString(culture);
else
return ((DateTime)value).ToString(parameter as string, culture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Тогда в вашем XAML вы сначала определите конвертер как ресурс ...
<namespace:DateTimeToStringConverter x:Key="MyDateTimeToStringConverter"/>
.. затем укажите его вместе с допустимым параметром для форматирования значения DateTime
...
<TextBlock Text="{Binding Date,
Converter={StaticResource MyDateTimeToStringConverter},
ConverterParameter=\{0:M\}}"/>