Ich habe einen DatePicker, damit der Benutzer Datum auswählen kann.
Ich möchte, dass der Benutzer nur das verfügbare Datum auswählt. und die verfügbaren Daten sind in a gespeichert List
Bisher habe ich das:
<DatePicker x:Name="DatePicker"
SelectedDate="{Binding SearchEngineCompassLogView.DateSearch,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DataContext="{StaticResource CompassLogView}">
</DatePicker>
Antworten:
1 für die Antwort № 1Sie können verwenden BlackoutDates
Eigenschaft aber in dieser Lösung müssen Sie angeben DisplayDateStart
und DisplayDateEnd
.
Das BlackoutDates
ist eine Sammlung von Daten, die nicht zur Auswahl stehen (msdn).
Beispiel:
<DatePicker x:Name="datePicker"
Loaded="datePicker_Loaded"
DisplayDateStart="2000/01/01"
DisplayDateEnd="2050/01/01"
/>
Geladener Event-Handler:
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);
}
}
Sammlung mit verfügbaren Terminen:
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)
};