2013-04-11 88 views
1

我想把一個日曆控件(WPF)放在一起,它只會顯示日期集合中的日期,這些日期是季度性的。日曆控件 - 顯示宿舍

例如我的日期的集合(datetime對象的列表)將如下

31/Mar/2012 

31/Dec/2012 

30/Sep/2012 

30/Jun/2012 

30/Mar/2012 

現在我可以使用日曆控件並設置它的顯示模式,今年剛剛顯示年,月視圖,但是我怎樣才能讓控件停止在上述集合中不可用的月份,並只顯示集合中可用的月份?

請注意,這個問題有兩個部分:

  1. 我怎麼停電了一個月,而日曆的顯示模式設置爲一年?
  2. 我該如何封鎖不屬於收藏的月份?

你能幫忙嗎?

回答

0

只需找到最小和最大的日期,然後這樣做:

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

進一步可以做的範圍,讓我們說這是不是直線前進,你需要多個範圍(儘管它看起來並不像它從你的問題),那麼你可以這樣做:

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

進一步你甚至可以黑掉的具體日期如下:

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

所以在你的情況下,最簡單的辦法就是禁用某些日期。只需循環訪問列表並利用我給出的最後一個代碼示例即可。

+0

當DISPLAYMODE設置爲一年這不停電一個月。 – Mike 2013-04-11 13:04:51

+0

@Mike,你是否期待這個月幾乎不可見?因爲日期不正確? – 2013-04-11 13:19:47

0

你可以嘗試這樣的事:

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

這不會在displaymode設置爲年份的月份中斷。 – Mike 2013-04-11 13:05:27