Microsoft.Samples.KMoore.WPFSamples.DateControls.MonthCalendar.InvalidateVisibleDays C# (CSharp) Method

InvalidateVisibleDays() private method

Invalidate the visible days when switch month
private InvalidateVisibleDays ( int scrollChange ) : void
scrollChange int
return void
        private void InvalidateVisibleDays(int scrollChange)
        {
            if (_mccContainer != null)
            {
                ObservableCollection<CalendarDate> newVisibleDays = CreateVisibleDaysCollection(FirstDate, LastDate, FirstDayOfWeek);
                Debug.Assert(newVisibleDays.Count == 42);

                //Clear the selection UI
                SetFlag(Flags.IsChangingSelectorSelection, true);
                try
                {
                    _mccContainer.SelectedItems.Clear();
                }
                finally
                {
                    SetFlag(Flags.IsChangingSelectorSelection, false);
                }

                //Generate new VisibleDays collection and update it
                if (DayTemplateSelector == null)
                {
                    for (int i = 0; i < VisibleDays.Count; ++i)
                    {
                        VisibleDays[i].InternalUpdate(newVisibleDays[i]);
                    }
                }
                else
                {
                    SetFlag(Flags.IsChangingSelectorSelection, true);
                    try
                    {
                        VisibleDays = newVisibleDays;
                        _mccContainer.ItemsSource = VisibleDays;
                    }
                    finally
                    {
                        SetFlag(Flags.IsChangingSelectorSelection, false);
                    }
                }

                RestoreSelection(scrollChange);
            }
            else
            {
                //If selected date is added before UIReady(_mccContainer is null)
                //VisibleDays and SelectedDates must be updated
                VisibleDays = CreateVisibleDaysCollection(FirstDate, LastDate, FirstDayOfWeek);
                RestoreSelection(scrollChange);
            }

            UpdateDataSourceToCalendarDates();
        }