【问题标题】:Calendar Control - Display Quarters日历控件 - 显示季度
【发布时间】:2013-04-03 14:43:07
【问题描述】:

我正在尝试组合一个日历控件 (WPF),它只会显示日期集合中的日期,这些日期本质上是季度性的。

例如,我的日期集合(日期时间对象列表)如下

31/Mar/2012

31/Dec/2012

30/Sep/2012

30/Jun/2012

30/Mar/2012

现在我可以使用日历控件并将其显示模式设置为 Year 只是为了显示年月视图,但是我如何设置控件来屏蔽上述集合中不可用的月份并只显示月份收藏中有吗?

请注意,问题分为两部分:

  1. 当日历的显示模式设置为年份时,如何将月份显示为黑色?
  2. 如何将不属于集合的月份涂黑?

你能帮忙吗?

【问题讨论】:

    标签: c# wpf .net-3.5


    【解决方案1】:

    你可以试试这样的:

    public void BlackOutDates(startDate, endDate, periodInDays)
    {
        while(startDate < endDate)
        {
            calender.BlackoutDates.Add(new CalendarDateRange(startDate, startDate.AddDays(periodInDays));
            startDate = startDate.AddDays(periodInDays+1);
        }
    }
    

    【讨论】:

    • 当显示模式设置为年份时,这不会黑掉月份。
    【解决方案2】:

    只需找到最小和最大日期,然后执行以下操作:

    calendarControl.BlackoutDates.Add(new CalendarDateRange(minDate, maxDate));
    

    您还可以做范围,所以假设它不是那么简单,并且您需要多个范围(尽管从您的问题看起来不像),那么您可以这样做:

    calendarControl.BlackoutDates.Add(new CalendarDateRange(rangeStart, rangeEnd));
    

    您甚至可以像这样将特定日期涂黑:

    calendarControl.BlackoutDates.Add(new CalendarDateRange(blackoutDate));
    

    所以在您的情况下,将某些日期涂黑可能是最简单的。只需遍历列表并利用我给您的最后一个代码示例。

    【讨论】:

    • 当显示模式设置为年份时,这不会黑掉月份。
    • @Mike,您是否希望该月份甚至不可见?因为日期不能选择对吗?
    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多