private void RemoveFromGroup(CalendarEvent calendarEvent) { var start = calendarEvent.Start.Date; while (start < calendarEvent.End.Date) { if (!_dayItemsSource.ContainsKey(start)) { break; } _dayItemsSource[start].Remove(calendarEvent); _dayItemsSource[start].Refresh(); start = start.AddDays(1); } _allEvents.Remove(calendarEvent); // 当Refresh时总是会默认选中第一项(执行CurrentChanged) var temp = _activeTime; AllEventsView.Refresh(); if (temp.Month == _activeTime.Month && calendarEvent.Is <Holiday>()) { SummarizeActiveMonth(); } ActiveTime = temp; }
private void AddToGroup(IEnumerable <CalendarEvent> calendarEvents) { var anyHolidayAdd = false; CalendarEvent lastAddedCalendarEvent = null; foreach (var calendarEvent in calendarEvents) { var start = calendarEvent.Start.Date; while (start < calendarEvent.End.Date) { if (!_dayItemsSource.ContainsKey(start)) { _dayItemsSource[start] = new DayItemModel(start); } if (calendarEvent.Is <DaylightSavingTime>()) { _dayItemsSource[start].Insert(0, calendarEvent); } else { _dayItemsSource[start].Add(calendarEvent); } _dayItemsSource[start].Refresh(); //CollectionViewSource.GetDefaultView(_dayItemsSource[start]) // .Self(v => // { //可防止删除calendarEvent的时候未选中项 // v.MoveCurrentToFirst(); // }); start = start.AddDays(1); } _allEvents.Add(calendarEvent); if (calendarEvent.Is <Holiday>()) { anyHolidayAdd = true; } lastAddedCalendarEvent = calendarEvent; } AllEventsView.Refresh(); if (lastAddedCalendarEvent != null) { AllEventsView.MoveCurrentTo(lastAddedCalendarEvent); } if (anyHolidayAdd) { SummarizeActiveMonth(); } }