<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框乱了,“Page”属性不做任何事情(?)。
第一行代码是原始代码,它什么也没做。谷歌搜索后人们推荐使用SelectedDate,但它说 错误在'DatePicker'类型中找不到属性'SelectedDate'。 如何解决这个问题?
答案 0 :(得分:0)
您的重叠逻辑错误。在接受的答案中可以看到正确的算法:Algorithm to detect overlapping periods
DateCalc看起来正确,它是如何失败的?你应该考虑在这样的代码中使用DateTime.Today而不是.Now来避免因.Now的时间成分导致的一个错误而烦恼 - 但我不清楚是否应该从当前日期预订是可能的。
答案 1 :(得分:0)
试试这个:(ps。我为了自己的理智改变了(和假定的)你的功能名称:D我认为你也应该这样做)
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。脱离我的头顶,所以没有真正测试过。 是对罗林(https://stackoverflow.com/a/13513973/189554)
的过度信贷