WPF包含两个日期控件:Calender和DatePicker。这两个控件都被设计为允许用户选择日期。

  Calendar控件显示日期,在与Windows操作系统中看到的日历(例如,当配置系统日期时看到的日历)相似。该控件每次显示一个月份,允许从一个月份跳到另一个月份(通过单击箭头按钮),或跳到某个特定的月份(通过单击月份的标题头查看一年中的月份,然后单击月份)。

  DatePicker控件需要的空间更少。它模范简单的文本框,该文本框以长日期格式或短日期格式保存日期字符串。DatePicker控件提供了一个下拉箭头,当单击时,会弹出完整的日历试图,该试图和Calendar控件显示的试图仙童。这个弹出试图显示在其他任何内容的上面,就像是下拉组合框。

  下图显示了Calendar控件支持的两种显示模式,以及DatePicker支持的两种日期格式。

 

   Calendar和DatePicker控件提供的属性允许你确定显示哪些日期以及哪些日期时可供选择的(以连续的范围提供这些日期)。下表列出了可供使用的属性:

表 Calendar和DatePicker类的属性

 

   日期控件还提供了几个不同事件。最有用的事件是DatePicker控件中的SelectedDateChanged事件,或Calendar控件中类似的SelectedDatesChanged事件,该事件添加了对多个日期选择的支持。可响应这些事件以拒绝特定的日期选择,例如周末的日期:

 private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach (DateTime selectedDate in e.AddedItems)
            {
                if ((selectedDate.DayOfWeek == DayOfWeek.Saturday) ||
                    (selectedDate.DayOfWeek == DayOfWeek.Sunday))
                {
                    lblError.Text = "Weekends are not allowed";

                    ((Calendar)sender).SelectedDates.Remove(selectedDate);
                }
            }
        }

  可使用支持单个或多个日期选择的Calendar事件加以测试。如果支持多个选择,那么尝试在整个星期的日期上拖动鼠标。除不允许的周末日期外,其他所有日期将保持突出显示,而周末日期将被自动取消选择。

  Calendar控件还添加了DisplayDateChanged事件(当用户浏览到新的月份时触发该事件)。DatePicker控件添加了CalendarOpened和CalendarClosed事件(当下拉日历显示和关闭时触发这两个事件),以及DateValidationError事件(当用户在文本输入部分输入不能被解释为合法时间的值时触发该事件)。通常,但用户打开日历试图时会丢弃非法值,但可以选择填充一些文本以通知发生了问题:

private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
        {
            lblError.Text = "'" + e.Text +
                "' is not a valid value because " + e.Exception.Message;
        }

 

版权声明:本文为Peter-Luo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Peter-Luo/p/12256504.html