private void Triggered(Utilities.Trigger trigger, object result) { // refresh recent list Dispatcher.BeginInvoke((Action)(() => { using (var data = new DatalayerDataContext()) { var onGoing = data.ActivityQueues .Where(x => x.TimeStarted >= App.Start && x.TimeCompleted == null && x.TimeAdded >= App.Start) .ToList(); var activities = onGoing.Select(x => App.Activities.First(y => y.Entity.Id == x.ActivityId)) .ToList(); var oldItems = Ongoing.Children.OfType <ContentPresenter>() .Where(x => !activities.Contains(x.Content)) .ToList(); var newItems = activities.Where(x => !Ongoing.Children .OfType <ContentPresenter>() .Select(y => y.Content).Contains(x)) .ToList(); foreach (var old in oldItems) { Ongoing.Children.Remove(old); } foreach (var newItem in newItems) { Ongoing.Children.Add(new ContentPresenter { Content = newItem, Margin = new Thickness(5) }); } } }), DispatcherPriority.ApplicationIdle); }
public override void Execute(object context, ActivityQueue queue, Utilities.Trigger trigger) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke( (Action <dynamic>)(context1 => Execute(context1, queue, trigger)), DispatcherPriority.Input, context); return; } var element = context as FrameworkElement; if (element != null) { } /*((MainWindow) Application.Current.MainWindow).Timeline.TimelineEvents.Add(new TimelineEvent * { * Description = context.ToString(), * StartDate = queue.TimeAdded.ToLocalTime() * }); * ((MainWindow) Application.Current.MainWindow).Timeline.RefreshEvents(true); * */ }