Как отформатировать дату в универсальном приложении Магазина Windows (W8.1 + WP8.1)?
-
21-12-2019 - |
Вопрос
Я экспериментировал с новым шаблоном универсального приложения Магазина 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.