Всегда ли мне нужно писать конвертер для форматирования даты? - PullRequest
4 голосов
/ 02 февраля 2010

Я часто использую текстовые поля в своих wpf-проектах, которые привязаны к datetime-Propertys. Я хочу отформатировать даты в немецком формате dd.MM.yyyy. В настоящее время я делаю это с помощью самописного конвертера, которому я могу дать необходимый формат даты.

Например, вот так:

<TextBox Name="Date" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type prj:MyBar}}, Path=Date, Converter={StaticResource dateConverter}, ConverterParameter=dd.MM.yyyy}" />

Единственное, что делает конвертер, это вызывает ToString(string formatString) -метод DateTime.

Есть ли «умнее» способ форматирования даты с привязкой к данным. Лучше всего, если нет необходимости писать C # -код. Возможно, в microsoft-libs есть какой-нибудь существующий класс, который мог бы выполнять такое преобразование даты для привязки данных, но я пока не нашел его.

Было бы замечательно, если есть какие-либо советы,

привет, Martin

1 Ответ

9 голосов
/ 02 февраля 2010

.NET 3.5 SP1 имеет StringFormatter.

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

Результат: 02/02/2010

<TextBox Name="Date" Text="{Binding Date, StringFormat='{}{0:D}'}"/>

Результат: вторник, 2 февраля 2010 г.

Но результат также может отличаться в зависимости от системного формата даты и времени по умолчанию.

...