Nano Hash - криптовалюты, майнинг, программирование

Как отформатировать дату в столбце с помощью конвертеров?

У меня есть столбец в моей сетке данных, который правильно привязан к данным и работает. Теперь я хотел бы повлиять на его формат. Итак, я внедрил преобразователь и подключил его к полю.

<local:DateTimeFormat x:Key="IncludeTime" />
...
<igDP:Field Name="CreatedOn"
            Label="Label"
            Converter="{StaticResource IncludeTime}">
</igDP:Field>

Видимо, что-то не так, потому что я не вижу изменений в окне. Однако, когда я ставлю точку останова в конвертере, она срабатывает, и когда я выполняю оператор в Immediate Window, он получает строку, как и предполагалось.

public class DateTimeFormat : IValueConverter
{
  public object Convert(object v, Type t, object p, CultureInfo c)
  {
    if (v is DateTime)
      return System.Convert.ToDateTime(v).ToString("yyyy-MM-dd HH:mm:ss");
    return Binding.DoNothing;
  }
  ...
}

Я предполагаю, что я не подключаю выход преобразователя к правильной части разметки, но это бьет меня, как это решить.

Обратите внимание, что я ищу общий подход, применяющий преобразователи к полям в моей сетке данных, поэтому стилизация этого не сделает (хотя может быть подход, охватывающий даты, время и валюты).


Ответы:


1

Я пытаюсь использовать «ValueToDisplayTextConverters» для этого сценария, когда могу.

xmlns:ie="http://infragistics.com/Editors"
...
<local:DateTimeFormat x:Key="IncludeTime" />
...
<igDP:Field Name="CreatedOn"
        Label="Label">
    <igDP:Field.Settings>
        <igDP:FieldSettings>
            <igDP:FieldSettings.EditorStyle>
                <Style TargetType="{x:Type ie:XamDateTimeEditor}" BasedOn="{StaticResource {x:Type ie:XamDateTimeEditor}}">
                    <Setter Property="ValueToDisplayTextConverter" Value="{StaticResource IncludeTime}" />
                </Style>
            </igDP:FieldSettings.EditorStyle>
        </igDP:FieldSettings>
    </igDP:Field.Settings>
</igDP:Field>

Поставить преобразователь на Поле можно, хотя я точно не знаю, почему он не работает в вашем случае. Тем не менее, я считаю, что размещение преобразователя в поле полезно, когда у меня есть более сложный тип/объект, чем DateTime, привязанный к полю, где я по существу хочу сделать для него ToString().

Он также изменяет тип значения в DataItem записи, что впоследствии может вызвать проблемы при сортировке или экспорте. Например, преобразование данных в строку в преобразователе полей означает, что сортировка будет выполняться по строковому значению, а не по дате и времени. Вы можете обойти это, написав собственный SortComparer, но это еще один код, который вам нужно написать, что может и не понадобиться.

05.11.2015

2

Я столкнулся с той же проблемой при попытке отформатировать строку. Я исправил это, установив свойство EditAsType в FieldSettings.

EditAsType = "{x:Type core:String}"

Конечно, вы можете заменить String на DateTime или другой тип.

Основное пространство имен:

xmlns:core = "clr-namespace:System;assembly=mscorlib"
12.01.2017

3

какой бы формат вы ни хотели видеть, просто создайте стиль для XamDateTimeEditor и укажите там формат (маску). ваш код правильный и возвращает правильное значение, но редактор, используемый для отображения этого значения, должен знать об этом, иначе он просто покажет значение в формате по умолчанию. (или ValueToDisplayTextConverter можно использовать для отображения любого типа текста в любом типе элемента управления. Например, буквенно-цифровой текст в числовом редакторе и т. д.)

И если вы используете простой текстовый редактор, вы сможете увидеть значение, возвращаемое преобразователем.

<igEditors:XamDateTimeEditor Format="MM/dd/yy HH:mm:ss" Width="200" Height="30" Mask="mm/dd/yy hh:mm:ss" />
30.12.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..