我想知道是否可以从日历(DatePicker)中获取特定日期,更具体地说是每周一和周二。我找到了类似的线程(How do create a DatePicker with only Sundays enabled?和Disable specific days of the week on jQuery UI datepicker)关于黑化日期,但是,我无法根据我的具体目标修改其代码。我在VB.NET(WPF)中编写了这个应用程序。
到目前为止,我使用的功能是将日期标记为:
Datepicker1.BlackoutDates.AddDatesInPast()
Datepicker2.BlackoutDates.Add(New CalendarDateRange(DateTime.Now.AddDays(1), DateTime.MaxValue))
第一个函数将清除过去日期,第二个函数将使所有未来日期变黑。因为有一个' DateRange'第二个功能需要,我无法根据需要更改此功能。
提前致谢
杰里
答案 0 :(得分:4)
我修改了其中一个例子并提出了这个问题 它对我有用。
private void MyDatePicker_CalendarOpened(object sender, RoutedEventArgs e)
{
MyDatePicker.DisplayDateStart = DateTime.Now;
MyDatePicker.DisplayDateEnd = DateTime.Now + TimeSpan.FromDays(1000);
var minDate = MyDatePicker.DisplayDateStart ?? DateTime.MinValue;
var maxDate = MyDatePicker.DisplayDateEnd ?? DateTime.MaxValue;
for (var d = minDate; d <= maxDate && DateTime.MaxValue > d; d = d.AddDays(1))
{
if (d.DayOfWeek == DayOfWeek.Monday || d.DayOfWeek == DayOfWeek.Tuesday)
{
MyDatePicker.BlackoutDates.Add(new CalendarDateRange(d));
}
}
}
答案 1 :(得分:1)
谢谢Okuma Scott,这是一些有用的反馈!我根据我的具体需要将你的代码重写为VB语言。
所包含的代码将检查明年的所有日期,并将在周一和周二全部停电。
Private Sub Datepicker_CalendarOpened(sender As Object, e As RoutedEventArgs) Handles Datepicker.CalendarOpened
Dim currDate As Date = DateTime.Now
Dim maxDate As Date = DateTime.Now.AddDays(356)
While (currDate < maxDate)
If currDate.DayOfWeek = DayOfWeek.Monday Or currDate.DayOfWeek = DayOfWeek.Tuesday Then
DatumSelectie.BlackoutDates.Add(New CalendarDateRange(currDate))
End If
currDate = currDate.AddDays(1)
End While
End Sub