#1,038 – Another Way to Prevent Certain Dates from Being Selected
March 27, 2014 1 Comment
You can limit the dates available for selection in a Calendar or DatePicker control in a few different ways.
- Specify blackout dates
- Specify allowed start and end dates
- Handle the SelectedDateChanged event
If you want to prohibit some combination of dates, but have to do some calculation to figure out which dates should be prohibited, you can add a handler for the SelectedDateChanged event.
<Label Content="Pick a day to go skydiving:" Margin="5"/> <DatePicker Margin="5,0,5,5" SelectedDateChanged="DatePicker_SelectedDateChanged" />
In the handler, if the selected date is not one that you allow, you can undo the fact that it was selected.
private void DatePicker_SelectedDateChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { DateTime dayToDive = (DateTime)e.AddedItems[0]; if ((dayToDive.DayOfWeek == DayOfWeek.Friday) && (dayToDive.Day == 13)) { MessageBox.Show("Dude, that's really an unlucky day to go skydiving."); ((DatePicker)sender).SelectedDate = null; } } }
If we pick a Friday the 13th, the application warns us and then unselects the date.