Wpf xceed datetimepicker中断日期
问题描述:
我正在努力寻找解决方案。标准的wpf datepicker控件拥有它的属性BlackoutDates,它禁用了过去的日期。我想为Wpf xceed datetimepicker控件实现这种功能,但不知道如何? 我想要管理的所有内容都是在datetimepicker设置某个值时禁用过去的日期。有任何想法吗?Wpf xceed datetimepicker中断日期
答
既然BlackoutDates
默认情况下不可用,您将不得不修改Xceed DateTimePicker。通过阅读here了解如何组成控制器。
接下来,请注意DateTimePicker的Calendar
。然后观察this文档。
根据我的理解,您需要为采用某种DateTime集合的控件创建一个Dependency Property。在设置该属性的回调中,您将要采集该集合中的每个项目,并将其添加到PART_Calendar.BlackoutDates
集合中。仅供参考,因为BlackoutDates是只读的,您不能让您的DP为CalendarBlackoutDatesCollection
类型,只需在回调中设置BlackoutDates
;相反,您需要手动将每个日期添加到日历的集合中。
答
不更改xceed工具包的实际源代码(完全可行)并修改日历部分。接下来最好的事情是将验证规则添加到控件的文本框中。
public class YearValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
DateTime date = value as DateTime;
if (date == null)
return new ValidationResult(false, "Chosen date cannot be null.");
if(BlackoutDatesDates.Contains(date))
return new ValidationResult(false, "This date is blacked out.");
return ValidationResult.ValidResult;
}
}
什么Wpf Xceed DateTimePicker有标准控件没有?使用标准控制器可能会更好。 – Kcvin
它有时间定义。在标准控制中,只有日期。 – Stojdza