Как отформатировать TimeSpan в XAML

Я пытаюсь отформатировать текстовый блок, привязанный к свойству TimeSpan . Он работает, если свойство имеет тип DateTime но он терпит неудачу, если это TimeSpan . Я могу сделать это с помощью конвертера. Но я пытаюсь выяснить, есть ли альтернативы.

Образец кода:

 public TimeSpan MyTime { get; set; } public Window2() { InitializeComponent(); MyTime = DateTime.Now.TimeOfDay; DataContext = this; } 

Xaml

  

Я ожидаю, что текстовый блок покажет только часы и чеки. Но он показывает как:

19: 10: 46,8048860

В .NET 3.5 вы можете использовать MultiBinding вместо

         

Обновить
Чтобы ответить на комментарии.

Чтобы убедиться, что вы выводите 2 цифры, даже если часы или минуты 0-9, вы можете использовать {0:00} вместо {0}. Это позволит убедиться, что выход за время 12:01 составляет 12:01 вместо 12: 1.
Если вы хотите вывести 01:01 как 1:01, используйте StringFormat="{}{0}:{1:00}"

И Условное форматирование может быть использовано для удаления отрицательного знака в течение нескольких минут. Вместо {1:00} мы можем использовать {1: 00; 00}

         

Строка формата предназначена для работы с DateTime , а не с TimeSpan .

Вы можете изменить свой код для работы с DateTime.Now . Ваш xaml в порядке:

  

Обновить

А из .Net 4 формат TimeSpan выглядит следующим образом:

  

Чтобы добавить в пул, я успешно использую эту привязку для отображения TimeSpan в рабочем приложении WPF:

 Binding="{Binding Time, Mode=TwoWay, StringFormat=\{0:h\\:mm\}}" 

Взял некоторые попытки получить обратную косую черту правильно 🙂

StringFormat должен быть в форме строки формата. В этом случае это будет выглядеть так:

  

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

Для Multi bindings вам нужно обратить внимание с .NET 4.

Ниже приведен краткий обзор, протестированный с помощью .NET 4.6:

Регулярная привязка:

  

Multi binding:

       

или вы можете использовать « вместо » в многосвязном режиме:

  

Примечание: использование StringFormat = “{} {0: hh \: \: mm \: ss} -> {1: hh \: mm \: ss}” не будет работать в MultiBinding, это приведет к пустым результатам.

WPF в .NET 4 теперь имеет временные frameworks из строк http://msdn.microsoft.com/en-us/library/ee372286.aspx

Я использую следующий

Я знаю, что этот вопрос уже старый, но я удивлен, что никто не предложил этот простой StringFormat который будет работать на TimeSpan напрямую:

  

Если вы хотите использовать StringFormat в ярлыке, который использует свойство Content, вы можете использовать ContentStringFormat для форматирования вашего времени:

 
  • Как изменить цвет фона ячейки в пользовательском форматировании jqgrid?
  • Преобразование переменной со смешанными форматами даты в один формат
  • Форматирование вывода Java для строк
  • Как отобразить вывод данных float с 2 десятичными знаками в Java?
  • Автоматическое форматирование источника Xcode
  • Удаление повторяющихся элементов с помощью XSLT
  • экспортировать кадры данных в Excel через xlsx с условным форматированием
  • Как отключить научную нотацию?
  • JPanel Padding в Java
  • Как рассчитать временной интервал в Java и форматировать вывод?
  • Форматирование DATE в oracle
  • Interesting Posts

    css переход с линейным gradleиентом

    Как искать строку в файле PHP с помощью `grep`?

    андроидная анимация не завершена inAnimationEnd

    ClassFormatError: Отсутствует атрибут кода в методе, который не является родным или абстрактным в файле classа javax / mail / MessagingException

    Как сохранить загруженный файл в JSF

    Как скопировать свойства одного пользователя Google Chrome на другой в OSX

    Почему нам нужно отмечать функции как constexpr?

    Настроить положение изображения стиля списка?

    Измените коллекцию маршрутов MVC6 после запуска

    Bootstrap 3 Карусель увядает с новым слайдом, а не сползает на новый слайд

    Почему allow.cartesian требуется в моменты, когда при подключении data.tables с дублирующими ключами?

    FindAll vs Где метод расширения

    Почему LayoutInflater игнорирует параметры layout_width и layout_height, которые я указал?

    Почему GCC использует умножение на странное число при реализации целочисленного деления?

    Частота DRAM, показывающая 800 вместо 1600

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