0

Имею класс, в классе есть две переменные long (UnixTime), они привязаны через Binding к ProgressBar. Также отдельно имеется класс, который переводит текущее время в Unix и раз в 5 сек таймером обновляет его. Время также привязано. Все это сделано для красивого отображения того, сколько осталось до конца события.

Сейчас мне нужно создать статус события (Если событие начинается выводим - начнется через : 00:00. Если событие идет - Закончится через: 00:00, ну и другая мелочь). С расчетами времени и тому подобному разберусь сам, но вот как сделать вывод этого времени и что бы оно обновлялось...

Вот в этом собственно и вопрос, как забиндить таймер и читать в нем элементы из класс модели?

В данной теме можно полностью посмотреть мою модель и как происходит привязка значений.

Класс Alerts содержит всю информацию о событиях и в нем значения:

  • long значение старта события - Alerts.Activation.Date.NumberLong
  • long значение конца события - Alerts.Expiry.Date.NumberLong

Желательно сделать в этом классе переменную State, которая и будет выводить время.

EvgeniyZ
  • 15,694
  • Биндиться нужно по идее не к модели, а к VM. – VladD May 17 '17 at 21:05
  • Вроде всё просто, не? У вас должны быть 3 свойства: Start, End и Current, и вы привязываете к ним Minimum, Maximum и Value у прогрессбара. – VladD May 17 '17 at 21:07
  • @VladD Вы немного не так поняли, я с баром вроде все сделал. Он рабочий, Value у меня привязано к отдельному классу, где я просто запускаю таймер и задаю значение DateTime.Now(); переведенное в Unix время. Мне нужно string переменную, где будет происходить вычисление и раз в 1-5 сек обновлять данные. Я вычисления все сделать могу, а вот что бы оно у меня раз в 1-5 сек обновлял значение, к сожалению мозгов пока не хватает. – EvgeniyZ May 17 '17 at 21:15
  • Вот это не совсем понял: «Мне нужно string переменную, где будет происходить вычисление и раз в 1-5 сек обновлять данные.» Вычисление должно ж проходить в методе, а не в переменной? И какие данные нужно обновлять? – VladD May 17 '17 at 21:19
  • Вот скриншот блока В нем есть у каждого элемента в ListBox время (сейчас оно у всех 00:00), надо вот туда забиндить обратный отсчет до окончания события. Что бы я грубо говоря сделал Text="{Binding Status}" и все, там было время, которое раз в секунду обновлялось бы (обратный отсчет). – EvgeniyZ May 17 '17 at 21:28
  • А! Понял! Только зачем вам строка? Положите в ваше свойство TimeSpan, и обновляйте его каждую секунду, записывайте туда EndTime - DateTime.Now. – VladD May 17 '17 at 21:33
  • А как обновлять то?) Через Get Set я думаю что то реализовывать, но таким методом у меня только вывести удалось. Время к прогрес бару я и вовсе таким методом реализовал. – EvgeniyZ May 17 '17 at 21:36
  • Ну, когда к вам приходит событие от таймера, обновляйте все нужные свойства, например. Кстати, вам нужен тот таймер, который доставляет события в UI-потоке. (Ну или перебрасывать туда.) – VladD May 17 '17 at 21:48

0 Answers0