2015-12-12 52 views
0
<DatePicker HorizontalAlignment="Left" Date="{Binding CzechzIn,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" Height="35" Margin="785,265,0,0" VerticalAlignment="Top" Width="265"/> 

<DatePicker HorizontalAlignment="Left" SelectedDate="{Binding CzechOut, Mode = TwoWay}" Height="35" Margin="785,328,0,0" VerticalAlignment="Top" Width="286"/> 

編輯:DatePicker的結合不工作

錯誤是在binding.Apparently的DatePicker盒搞砸了,並在「頁面」屬性沒有做任何事情(?)。

第一行代碼是原始代碼,它什麼都不做。谷歌搜索後,人們建議使用SelectedDate,但它說 錯誤在'DatePicker'類型中找不到屬性'SelectedDate'。 如何解決這個問題?

+0

的可能的複製[算法來檢測重疊時段(http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods) –

+0

'簽入>日期時間。現在'簽入不可能比'DateTime.Now'更大。也意識到一個'DateTime'對象總是一個日期和時間,並且它下降到毫秒。 I.E. 'CheckIn = DateTime.Now; '然後在下一個語句中,檢查相等性:'CheckIn == DateTime.Now;'它們可能不同,如果只有一毫秒。或者他們可能不會。在後續執行中你可能會得到不同的答案。 – radarbob

+0

CheckIn應該是在未來。我應該被綁定到日期選擇器。 – Margarin

回答

0

您的重疊邏輯錯誤。在接受的答案中可以看到正確的算法:Algorithm to detect overlapping periods

DateCalc看起來是正確的,它是如何失敗的?你應該考慮使用DateTime.Today。現在在這樣的代碼中,以避免由於.Now的時間組件導致的一個錯誤而引起的不愉快 - 但是我不清楚是否應該從當前日期預訂。

+0

謝謝!該算法更有意義,但它只是產生相反的結果,導致我相信它不起作用的原因是代碼中的其他地方。 – Margarin

+0

而DateCalc神祕地不工作。我不知道爲什麼。 – Margarin

0

試試這個:(我自己的理智PS我改變了(並假設)你的函數名:DI想你也應該這麼做)

DateCalc(你的代碼應該是正確的,但這裏有一個較短的版本):

public bool isCheckInOutOk() 
{ 
    return (CheckIn < CheckOut) && (CheckIn > DateTime.Now); 
} 

DateCalc2:

public bool isOverlapping() 
{ 
    foreach (Booking book in Books) 
    { 
     if (book.CheckInDateTime < CheckOut && CheckIn < book.CheckOutDateTime) 
      return true; 
     } 
    } 
    return false; 
} 

的話,你可以使用:

if (IsConfirmed && isCheckInOutOk() && !isOverlapping()) 

PS。離開我的頭頂,所以沒有真正測試過。 isOverlapping信貸Rawling(https://stackoverflow.com/a/13513973/189554