void LoadEvents() { this.AsyncUI(() => { var now = DateTime.UtcNow; var from = new DateTime(now.Year, now.Month, 1); var to = from.AddMonths(1); return(_Calendar.Search(CalDav.CalendarQuery.SearchEvents(from, to))); }, results => { lbEvents.Items.Clear(); var events = results.SelectMany(x => x.Events); lbEvents.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; foreach (var evnt in events) { var grid = new Grid(); grid.Margin = new Thickness(0); grid.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; grid.ColumnDefinitions.Add(new ColumnDefinition { }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(90) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(90) }); var lbl = new Label { Content = evnt.Start.Value.ToShortDateString() + " " + evnt.Summary }; grid.Children.Add(lbl); Grid.SetColumn(lbl, 0); var btn = new Button { Content = "Tomorrow" }; btn.Click += (sender, ee) => { evnt.Start = DateTime.UtcNow.AddDays(1).Date; btn.IsEnabled = false; this.AsyncUI(() => _Calendar.Save(evnt), LoadEvents); }; btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; btn.Margin = new Thickness(0); grid.Children.Add(btn); Grid.SetColumn(btn, 1); var btn2 = new Button { Content = "Next Week" }; btn2.Click += (sender, ee) => { evnt.Start = DateTime.UtcNow.AddDays(7).Date; btn2.IsEnabled = false; this.AsyncUI(() => _Calendar.Save(evnt), LoadEvents); }; btn2.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; btn2.Margin = new Thickness(0); grid.Children.Add(btn2); Grid.SetColumn(btn2, 2); lbEvents.Items.Add(grid); } }); }