2014-03-31 50 views
1

我正在努力尋找解決方案。標準的wpf datepicker控件擁有它的屬性BlackoutDates,它禁用了過去的日期。我想爲Wpf xceed datetimepicker控件實現這種功能,但不知道如何? 我想要管理的所有內容都是在datetimepicker設置某個值時禁用過去的日期。有任何想法嗎?Wpf xceed datetimepicker中斷日期

+0

什麼Wpf Xceed DateTimePicker有標準控件沒有?使用標準控制器可能會更好。 – Kcvin

+0

它有時間定義。在標準控制中,只有日期。 – Stojdza

回答

0

既然BlackoutDates默認情況下不可用,您將不得不修改Xceed DateTimePicker。通過閱讀here瞭解如何組成控制器。

接下來,請注意DateTimePicker的Calendar。然後觀察this文檔。

根據我的理解,您需要爲採用某種DateTime集合的控件創建一個Dependency Property。在設置該屬性的回調中,您將要採集該集合中的每個項目,並將其添加到PART_Calendar.BlackoutDates集合中。僅供參考,因爲BlackoutDates是隻讀的,您不能讓您的DP爲CalendarBlackoutDatesCollection類型,只需在回調中設置BlackoutDates;相反,您需要手動將每個日期添加到日曆的集合中。

+0

但BlackoutDates屬性無法被我的控件識別。 – Stojdza

+0

我改變了我的答案。如果您有任何問題,請告訴我。 – Kcvin

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