从WPF日历中断日期集合中删除中断日期

时间:2017-11-11 15:49:01

标签: c# wpf date calendar

所以我想要断开2000年以来WPF日历中不在日期时间列表中的所有日期。

我的想法是从2000年到现在单独停电所有日期,然后从停电日期集合中删除每个日期。

此代码可以添加日期,但无法从集合中删除日期。

var DateList = FI.Select(x => x.LastWriteTime.Date).Distinct().ToList();

for (var day = new DateTime(2000,1,1); day.Date <= DateTime.Now.Date; day = day.AddDays(1))
{                
      Calendar.BlackoutDates.Add(new CalendarDateRange(day));
}
foreach (DateTime k in Datelist)
{
    Calendar.BlackoutDates.Remove(new CalendarDateRange(k));
}

我比较了中断日期集合中的日期范围和列表当前迭代中新创建的日期范围,但它说它们不相等。

Comparison seen here

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

CalendarDateRange课程允许您指定范围的开始日期和结束日期,您不必每天都添加CalendarDateRange

https://msdn.microsoft.com/en-us/library/system.windows.controls.calendardaterange(v=vs.110).aspx

此外,Calendar.BlackoutDates文档中有很多代码示例: https://msdn.microsoft.com/en-us/library/system.windows.controls.calendar.blackoutdates(v=vs.110).aspx

        var DateList = FI.Select(x => x.LastWriteTime.Date).Distinct().ToList();

        //Add all dates between DateTime.MinValue and the day before your DateList min value.
        Calendar.BlackoutDates.Add(new CalendarDateRange(DateTime.MinValue, DateList.Min().AddDays(-1)));

**编辑**

看完你的评论后,我似乎误解了你的问题。您正尝试删除CalendarDateRange的新实例,该实例与添加到集合中的CalendarDateRange实例不同,即使它们具有相同的start和{{1} }值。

将此end块替换为此问题以解决您的问题:

foreach