如何在WPF中禁用日历中的过去几天?

时间:2013-07-01 09:47:07

标签: wpf

我正在开发WPF应用程序,因为我试图禁用过去几天的日历。 任何方式都可以禁用过去的日子。请告诉我。

感谢

8 个答案:

答案 0 :(得分:9)

您可以将DisplayDateStart属性设置为今天。

myCalendar.DisplayDateStart = DateTime.Today;

如果你想将它们变黑,而不是隐藏所有以前的值,你可以这样做。

CalendarDateRange cdr = new CalendarDateRange(DateTime.MinValue, DateTime.Today);
myCalendar.BlackoutDates.Add(cdr);

答案 1 :(得分:6)

您必须使用今天的日期

设置DisplayDateStart属性
<DatePicker Name="dt_StartDateFrom" DisplayDateStart="{x:Static sys:DateTime.Today}">
</DatePicker>

确保已设置

  

的xmlns:SYS = “CLR-命名空间:系统;装配= mscorlib程序”

您的<UserControl>代码中的

可以使用sys:参数

P.S。要禁用将来的日期,您可以使用DisplayDateEnd属性

答案 2 :(得分:3)

我通过尝试自己得到了解决方案。

Window_load中,只需为calendar添加此行。

Caldate.BlackoutDates.Add(new CalendarDateRange(new DateTime(1990, 1, 1), 
DateTime.Now.AddDays(-1)));

它会阻止以前的日期。

答案 3 :(得分:3)

您可以通过以下方式停用日历中的过去日期: -

Caldr.DisplayDateStart = DateTime.Today;

答案 4 :(得分:1)

如果我们想通过xaml添加它,

This是一个更简洁的解决方案。

答案 5 :(得分:0)

要阻止过去的日期(今天之前的所有内容),您只需使用Framework的4.0+方法:AddDatesInPast()

myCalendar.BlackoutDates.AddDatesInPast();

它与接受的答案相同,但更直接。

答案 6 :(得分:0)

在WPF中,您希望将MVVM绑定用于视图模型。这种方法更为通用,允许您在单元测试中进行边界检查。

   <DatePicker SelectedDate="{Binding SelectedDate}"  DisplayDateStart="{Binding MinAvailDate}" DisplayDateEnd="{Binding MaxAvailDate}"></DatePicker>

在视图模型中....

private DateTime _minAvailDate= DateTime.UtcNow;
        public DateTime MinAvailDate { get { return _minAvailDate; }
        set { _minAvailDate = value; OnPropertyChanged("MinAvailDate"); }

设置MinAvailDate = DateTime.Now,或调整时区的默认值 以类似的方式实现MaxAvailDate,以及绑定到SelectedDate。

答案 7 :(得分:0)

我喜欢@sohailby的答案,但我只想通过使用blackoutdates进行更改


  <DatePicker.BlackoutDates>
     <CalendarDateRange End="{x:Static sys:DateTime.Today}" Start="{x:Static sys:DateTime.MinValue}" />
  </DatePicker.BlackoutDates>