我很难找到解决方案。标准的wpf datepicker控件有它的属性BlackoutDates,它禁用过去的日期。我想为Wpf xceed datetimepicker控件实现这种功能,但只是不知道如何? 我想要管理的是在datetimepicker设置某个值时禁用过去的日期。有什么想法吗?
答案 0 :(得分:0)
由于默认情况下BlackoutDates
不可用,您必须修改Xceed DateTimePicker。首先通过阅读here来了解控件的组成方式。
接下来,请注意DateTimePicker有一个Calendar
。然后观察this文档。
根据我的理解,您需要为控件创建一个Dependency属性,该属性采用某种DateTime集合。在设置该属性的回调中,您将要收集集合中的每个项目,并将其添加到PART_Calendar.BlackoutDates
集合中。仅供参考,因为BlackoutDates是只读的,您不能使您的DP属于CalendarBlackoutDatesCollection
类型,只需在回调中设置BlackoutDates
;相反,您需要手动将每个日期添加到日历的集合中。
答案 1 :(得分:0)
不改变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;
}
}