Wpf xceed datetimepicker中断日期

时间:2014-03-31 15:46:50

标签: c# wpf datetimepicker

我很难找到解决方案。标准的wpf datepicker控件有它的属性BlackoutDates,它禁用过去的日期。我想为Wpf xceed datetimepicker控件实现这种功能,但只是不知道如何? 我想要管理的是在datetimepicker设置某个值时禁用过去的日期。有什么想法吗?

2 个答案:

答案 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;
    }
}