我正在开发WPF应用程序,因为我试图禁用过去几天的日历。 任何方式都可以禁用过去的日子。请告诉我。
感谢
答案 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)
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>