2017-01-02 25 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

相关问题