Форматирование даты в XAML на WP7 - PullRequest
9 голосов
/ 14 января 2011

Есть ли способ отформатировать дату с использованием XAML для Windows Phone 7?

Если попытаться использовать:

<TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yyyy}}" />

Но я получаю ошибку:

свойство 'StringFormat' не найдено в типе 'Binding'

Ответы [ 3 ]

20 голосов
/ 14 января 2011

В 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\}}"/>
2 голосов
/ 14 января 2011

Насколько мне известно, StringFromat - это функция Silverlight 4, Silverlight для Windows Phone 7.0 - это в основном Silverlight 3 + некоторые дополнительные функции.Наверное, нет.

0 голосов
/ 16 февраля 2011

Это, наверное, то, что вы ищете. RelativeDateTimeConverter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...