Я хотел бы использовать именованный строковый формат Short Date в WPF.
Я пробовал что-то вроде:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
Как это сделать?
Попробуй это:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
который является чувствительным к культуре и требует .NET 3.5 SP1 или выше.
ПРИМЕЧАНИЕ. Это чувствительно к регистру. «d» - это описатель короткого формата даты, а «D» - описатель длинного формата даты .
На странице MSDN есть полный список строковых форматов, посвященных строкам стандартного формата даты и времени, и более полное объяснение всех параметров в этом сообщении блога MSDN.
Однако с этим есть одна проблема - он всегда выводит дату в формате США, если вы сами не установите правильное значение для культуры.
Если это свойство не задано, механизм привязки использует свойство Language целевого объекта привязки. В XAML это значение по умолчанию «en-US» или наследует значение от корневого элемента (или любого элемента) страницы, если он был явно установлен.
Один из способов сделать это - использовать код (при условии, что вы установили правильное значение для культуры потока):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
Другой способ - установить культуру конвертера в привязке:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
Хотя это не позволяет локализовать вывод.
Или используйте это для английского (или смешайте для пользовательского) формата:
источник
Используйте
StringFormat
свойство (илиContentStringFormat
наContentControl
и его производные, напримерLabel
).<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Обратите внимание, что
{}
предшествующая стандартуString.Format
позиционная нотация аргументов позволяет экранировать фигурные скобки в языке расширения разметки.источник
{}
позволит вам использовать то,StringFormat='{}Created Date:{0:d}'
что в противном случае привело бы к неожиданным результатам.Некоторые примеры DateTime StringFormat, которые я нашел полезными. Заимствовано из примеров C #
источник
Если вы хотите добавить строку со значением, используйте это:
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />
источник
Обратите внимание на одинарные кавычки для формата строки. Это не работает:
пока это делает:
источник
Просто используйте:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
источник