//событие при обновлении таймера, (имитация времени) //здесь происходят все обновления данных и коллекций private void Dtimer_OnChangeTime(DateTime step) { //ставим новое время RealDateTime = step; OnPropertyChanged("RealDateTime"); //перебором коллекции обновляем статус рейса bool result = false; foreach (var vog in Voyages) { //сменился ли статус var tmp = vog.SetStatus(RealDateTime); if (tmp) { LastVoyage = vog; OnPropertyChanged("LastVoyage"); OnPropertyChanged("LastStatus"); } if (result == false) { result = tmp; } //если рейс уже вылетел, добавляем инфу о пассажирах на график if (vog.Status == 2 || vog.Status == 3) { if (names.Where(x => x == vog.Name).Count() == 0) { names.Add(vog.Name); graphVoyage.AddSeries(new PasItem(RealDateTime, vog.Passenger, vog.Name)); } } //если рейс уже приземлился, добавляем инфу о пассажирах на график 2 if (vog.Status == 5) { if (names2.Where(x => x == vog.Name).Count() == 0) { names2.Add(vog.Name); graphVoyage.AddSeries2(new PasItem(RealDateTime, vog.Passenger, vog.Name)); } } } //если данные статусы рейсов поменялись, обновляем фильтры коллекций if (result) { Executer.OnUIThread(UpdateUIViewCollection); } }