2017-01-02 84 views
1

我有一個帶有CalendarDatePicker的UWP應用程序。當我點擊日曆時,我打電話給WebService,給我一個「有效日期」的列表。我需要在「有效日期」列表中限制日曆,以便唯一可選的日期是那些日期,設置有效日期或禁用「無效日期」。設置有效日期列表中的CalendarDatePicker在UWP

如果它們不能被禁用,那麼以某種方式標記(粗體或劃掉)有效日期(或無效日期)就足夠了。

我見過MinDate和MaxDate,但這隻允許我設置範圍,而不是特定日期的列表。

如何限制CalendarDatePicker中的「有效」日期?

+0

可能重複[如何啓用/禁用DateTimePicker winforms c#中的特定日期](http://stackoverflow.com/questions/40059200/how-to-enable-disable-specific-dates-in-datetimepicker-winforms- c-sharp) – Prabu

+0

你可以在uwp中實現同樣的變化 – Prabu

+0

真的我不知道在uwp中如何實現同樣的功能:我沒有MonthCalendar控件,CalendarDatePicker沒有大膽的集合,我的日曆已經創建時,我需要限制CalendarDatePicker ...是否有更簡單的方法來做到這一點? – CarlosTI

回答

5

您需要通過CalendarViewDayItemChanging事件處理此事件;沒有MVVM友好的可綁定屬性來指定有效的日期。

<CalendarDatePicker CalendarViewDayItemChanging="onCalendarViewDayItemChanging"/> 
private HashSet<DateTimeOffset> validDates = new HashSet<DateTimeOffset> 
{ 
    DateTimeOffset.Parse("04/01/2017"), 
    DateTimeOffset.Parse("05/01/2017"), 
    DateTimeOffset.Parse("20/01/2017"), 
    DateTimeOffset.Parse("06/02/2017"), 
}; 

private void onCalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs e) 
{ 
    e.Item.IsBlackout = !validDates.Contains(e.Item.Date.Date); 
} 

Screenshot

與往常一樣,如果你想重新使用此功能,您可以轉換成一個附加屬性(ValidDates,也許)或行爲這一點。

+0

這完美地解決了我的問題!再來一次:thx! – CarlosTI