/ / WPF DatePicker pour afficher uniquement les dates disponibles - c #, wpf, datepicker

WPF DatePicker pour afficher uniquement les dates disponibles - c #, wpf, datepicker

J'ai un DatePicker afin que l'utilisateur puisse sélectionner des dates.

Je veux que l'utilisateur sélectionne uniquement la date disponible. et les dates disponibles sont stockées dans un List

Jusqu'ici j'ai ceci:

<DatePicker x:Name="DatePicker"
SelectedDate="{Binding SearchEngineCompassLogView.DateSearch,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DataContext="{StaticResource CompassLogView}">
</DatePicker>

Réponses:

1 pour la réponse № 1

Vous pouvez utiliser BlackoutDates propriété, mais dans cette solution, vous devez spécifier DisplayDateStart et DisplayDateEnd.

le BlackoutDates est une collection de dates non disponibles à la sélection (msdn).

Exemple:

 <DatePicker x:Name="datePicker"
Loaded="datePicker_Loaded"
DisplayDateStart="2000/01/01"
DisplayDateEnd="2050/01/01"
/>

Gestionnaire d'événements chargé:

private void datePicker_Loaded(object sender, RoutedEventArgs e)
{
DatePicker picker = sender as DatePicker;

if (picker.DisplayDateStart == null || picker.DisplayDateEnd == null) return;

picker.BlackoutDates.Clear();

DateTime start = picker.DisplayDateStart.Value;
DateTime end = picker.DisplayDateEnd.Value;

while (start <= end)
{
if (!availableDates.Contains(start))
{
picker.BlackoutDates.Add(new CalendarDateRange(start, start));
}
start = start.AddDays(1);
}
}

Collection avec dates disponibles:

List<DateTime> availableDates = new List<DateTime>
{
new DateTime(2013, 03, 01),
new DateTime(2013, 03, 02),
new DateTime(2013, 03, 03),
new DateTime(2013, 03, 31),
new DateTime(2013, 02, 01),
new DateTime(2013, 02, 02),
new DateTime(2013, 05, 01),
new DateTime(2013, 05, 02)
};