ciągu SL4 jest to możliwe ...
<TextBlock Text="{Binding Date, StringFormat='MM/dd/yyyy'}}"/>
... wewnątrz SL3 trzeba by skorzystać z 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();
}
}
Jeśli chcesz bardziej zdecydowane podejście można skorzystać z 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();
}
}
Następnie w XAML byś najpierw zdefiniować konwertera jako zasób ...
<namespace:DateTimeToStringConverter x:Key="MyDateTimeToStringConverter"/>
..then odwołać go wraz z dopuszczalnym parametru do formatowania wartości DateTime
...
<TextBlock Text="{Binding Date,
Converter={StaticResource MyDateTimeToStringConverter},
ConverterParameter=\{0:M\}}"/>
+1 jednak kilka sugestii: Dołącz Przykład użycia sprawiają, że korzystanie z ConverterParameter przejść w alternatywnym formacie ciąg podać nazwę klasy A bardziej zgodne z jego funkcji powiedzieć „DateTimeToStringConverter”. – AnthonyWJones
@AnthonyWJones Edytowane dodaje ... –
Zdecydowanie zaleca się, aby nie używać IValueConverter. Jedna linia kodu C# ujawniająca właściwość, która również jest opcją, również wykona tę konwersję. – JustinAngel