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();
}