Как отформатировать дату в универсальном приложении Магазина Windows (W8.1 + WP8.1)?

StackOverflow https://stackoverflow.com//questions/23030120

Вопрос

Я экспериментировал с новым шаблоном универсального приложения Магазина Windows, который можно использовать для Windows 8.1 и Windows Phone 8.1, и задавался вопросом, как форматировать строки в коде XAML.

Что я пробовал (XAML):

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

Проблема в том, что StringFormat недоступен в Windows.UI.Xaml.Controls.TextBox.

Microsoft создала пример проекта все дело в форматировании дат.Но использованный там подход основан на (уродливом) коде.

Вот мой вопрос:

  • Почему StringFormat недоступно в универсальных приложениях Магазина Windows?
  • Как форматировать строки, используя только код XAML?


РЕДАКТИРОВАТЬ:Я решил использовать конвертер, для тех, кому интересно, вот код:

public class DateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)
            return null;

        if (!(value is DateTime))
            return null;

        var dateTime = (DateTime)value;

        var dateTimeFormatter = new DateTimeFormatter(YearFormat.Full,
            MonthFormat.Full,
            DayFormat.Default,
            DayOfWeekFormat.None,
            HourFormat.None,
            MinuteFormat.None,
            SecondFormat.None,
            new[] { "de-DE" },
            "DE",
            CalendarIdentifiers.Gregorian,
            ClockIdentifiers.TwentyFourHour);

        return dateTimeFormatter.Format(dateTime);
    }

    public object ConvertBack(object value, Type targetType, object parameter,
        string language)
    {
        throw new NotImplementedException();
    }
}

Я рад каждому совету, как улучшить приведенный выше код, не стесняйтесь комментировать.

Спасибо Микаэлю Дуи Болиндеру и Мартину Сухану за ваше предложение/ответ.

Это было полезно?

Решение

DataBinding в типах проектов среды выполнения Windows не поддерживает свойство StringFormat, у вас есть следующие варианты:

  • Использовать уже отформатированную дату как доступную только для получения свойство в вашей ViewModel.
  • Использовать Конвертер - вы даже можете создать StringFormatConverter, где вы можете передать формат DateTime как КонвертерПараметр. Вот решение как может работать такой StringFormatConverter.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top