2010-02-02 5 views
4

Я часто использую текстовые поля в своих проектах 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

ответ

9

.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

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

+1

Стандартное форматирование даты и времени было во всех версиях .Net, см. Http://msdn.microsoft.com/en-us/library/az4se3k1(VS.71).aspx (версия 1.1) – HadleyHope

+0

Есть ли возможность этого в .NET 3.0, так как я еще не перенесла свой проект на 3.5. – martin

+0

Просто создайте преобразователь формата строки и передайте строку форматирования в качестве параметра преобразователя. Тогда вам нужно всего лишь сделать один конвертер для всех, и его легко обновить, когда/если вы перейдете на 3.5sp1. –

Смежные вопросы