2014-01-14 60 views
1

我有兩個datepickers:「dpInputDate」和「dpDueDate」。現在DueDate不能小於InputDate。所以我使用BlackoutDates.AddDatesInPast();並且它在應用程序啓動時工作正常。現在是當我改變dpInputDate的選定日期時,比dpDueDate自動獲得相同的值。問題是熄滅日期的數量保持不變。這裏是我使用的代碼:WPF datepicker在SelectedDateChanged BlackoutDates

private void dpInputDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
    { 
     dpDueDate.SelectedDate = dpInputDate.SelectedDate; 

     dpDueDate.BlackoutDates.Clear(); 
     dpDueDate.BlackoutDates.AddDatesInPast(); 
    } 

如何管理?

UPDATE:

private void dpDueDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
    {    
     if (dpDueDate.SelectedDate != null) 
     { 
      DateTime date = (DateTime)dpDueDate.SelectedDate; 
      dpDueDate.BlackoutDates.Clear(); 
      dpDueDate.BlackoutDates.Add(new CalendarDateRange(new DateTime(1/1/2001), date)); 
     } 
     else 
     { 
      dpDueDate.BlackoutDates.AddDatesInPast(); 
     } 
    } 

回答

2

AddDatesInPast()阻擋了來自DateTime.Now(即今天)所有日期,而不是從SelectedDate倒退。

因此,您需要計算自己的CalendarDateRange,並將BlackoutDates設置爲新的範圍。 存在過載,它有兩個日期,你可以用你的目的 http://msdn.microsoft.com/en-us/library/cc672700(v=vs.110).aspx

+0

乾草我eddited我的代碼,但現在我得到這個異常:「指定的參數超出有效值範圍的 參數名稱:價值無效。「 。我意識到這是由於我的datepicker選擇日期格式,但如何將其更改爲正確的格式? – Stojdza

+0

您對DateTime構造函數的使用不正確。你想使用重載之一,比如'new DateTime(2001,1,1)'。但是,這仍然會使2001年之前的日期可用,這可能不是你想要的。相反,你可以使用'dpDueDate.BlackoutDates.Add(DateTime.MinValue,date)' – Mashton

+0

Ok tnx,我改變了,但仍然得到相同的異常?如何處理? – Stojdza