2017-01-02 5 views
1

У меня есть приложение UWP с CalendarDatePicker. Когда я нажимаю календарь, я звоню в 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