WPF日期选择器仅显示可用日期

4

我有一个日期选择器,用户可以选择日期。

我希望用户只能选择可用的日期。可用日期存储在一个 List 中。

到目前为止,我的代码如下:

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

1
在这种情况下使用日期选择器不会让人感到困惑吗? 你不能使用简单的下拉列表/组合框吗? - David Goshadze
1个回答

1
你可以使用BlackoutDates属性,但在此解决方案中,您必须指定DisplayDateStartDisplayDateEndBlackoutDates是一组不可选择的日期(msdn)。
示例:
 <DatePicker x:Name="datePicker" 
                    Loaded="datePicker_Loaded"
                    DisplayDateStart="2000/01/01"
                    DisplayDateEnd="2050/01/01"
                    />

已加载事件处理程序:

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);
    }
}

可用日期的收藏:

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)
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接