Нужно форматировать даты в динамически построенных WPF DataGrid

Мы связываем неизвестный набор результатов с WPF DataGrid во время выполнения. Некоторые из наших столбцов будут содержать значения DateTime, и нам необходимо правильно форматировать эти поля времени. Не зная, какие столбцы будут полями DateTime во время разработки, как мы можем форматировать столбцы во время выполнения?

Мы используем DataView для DataTable для привязки к DataGrid WPF.

как насчет

 

Я думаю, что это лучше, чем писать большие fragmentы кода

Я понял, как это сделать в коде … надеюсь, есть способ имитировать это в XAML. (Пожалуйста, напишите, если вы найдете рабочий образец XAML.)

Чтобы выполнить это в коде, добавьте обработчик событий для события AutoGeneratingColumn Grid, например:

 private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(DateTime)) { DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn; if (dataGridTextColumn != null) { dataGridTextColumn.Binding.StringFormat = "{0:d}"; } } } 

Эй, вы можете установить информацию о культуре локали в конструкторе формы WPF как

this.Language = XmlLanguage.GetLanguage (CultureInfo.CurrentCulture.IetfLanguageTag);

Или вы можете включить разметку xml xml: lang = “en-GB” в разметке заголовка windows

  

Я бы использовал DataTemplate с DataType Date или DateTime (в зависимости от того, как он будет проходить через). Поместите TextBlock в DataTemplate с помощью StringFormat в привязке.

Что-то вроде этого должно работать (непроверено)

    

Или, если вы хотите, чтобы он применялся только в сетке

       ...  

dataGridTextColumn.Binding.StringFormat = “{0: dd / MM / yyyy}”;

работал красиво

Я запускаю этот путь. его работа завершена.

  

Ответ FarrEver, 11 мая, хорош, но мне это не действует. Я все еще получаю американский миллион / дд / гггг вместо моего немецкого dd / mm / yyyy. Поэтому я предлагаю найти региональные настройки компьютера и использовать его в StringFormat

  Private Sub DGrid_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As Microsoft.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) If e.PropertyType Is GetType(DateTime) Then Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn) If dataGridTextColumn IsNot Nothing Then Dim ShortDatePattern As String = System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern dataGridTextColumn.Binding.StringFormat = "{0:" + ShortDatePattern + "}" '"{0:dd/MM/yyyy}" End If End If End Sub 

Смотри также: мой блог

  • Как преобразовать миллисекунды в читаемую человеком форму?
  • Форматирование двух-двух знаков после запятой
  • Лисп форматирует символ несколько раз
  • Разница между java HH: mm и hh: mm на SimpleDateFormat
  • Преобразование строки в двойную - Java
  • Mysql: установите формат DATETIME в «DD-MM-YYYY HH: MM: SS» при создании таблицы
  • Изменение формата даты на yyyy-mm-dd
  • Как форматировать вывод печати или строку в фиксированную ширину?
  • Как печатать двойной с двумя десятичными знаками в Android?
  • Как отформатировать строку Java с начальным нулем?
  • Как изменить несколько форматов даты в одном столбце
  • Interesting Posts

    Как настроить прокси-сервер уровня ОС, если конкретное приложение не поддерживает его?

    Процесс приостановки в C #

    Как остановить вспышку от повышения температуры процессора?

    Почему оптимизация убивает эту функцию?

    Внешний жесткий диск 2 ТБ, инициализация диска: MBR или GPT

    Как сохранить двойные кавычки и точку с запятой в файле csv при открытии файла в excel 2010?

    Как очистить HTML-код, чтобы предотвратить атаки XSS в Java или JSP?

    Лучшая библиотека для статистики на C ++?

    .NET. Получить протокол, хост и порт.

    Как группировать андроидные уведомления, например whatsapp?

    Частный байт VS Рабочий набор в Process Explorer

    Как отключить интеллектуальный отступ в emacs (и заставить пробелы или вкладки)?

    Преобразование символьной цифры в соответствующее целое число в C

    Почему я должен выбирать Libav над FFmpeg, или есть даже разница?

    Как преобразовать анимированный GIF в формат видео в формате YouTube?

    Давайте будем гением компьютера.