Datetime Xamarin.表格2日期选择器不';不允许结束日期早于开始日期

Datetime Xamarin.表格2日期选择器不';不允许结束日期早于开始日期,datetime,datepicker,inotifypropertychanged,xamarin.forms,Datetime,Datepicker,Inotifypropertychanged,Xamarin.forms,我有两个DatePicker绑定到从INotifyPropertyChanged继承的对象-以下是DateTime属性的代码 private DateTime\u startDate; 公共日期时间起始日期 { 获取{return\u startDate;} 设置 { if(DateTime.Compare(值,_startDate)==0) { 返回; } _startDate=值; OnPropertyChanged(); } } //公共日期时间起始日期{get;set;} 私有日期时间_

我有两个DatePicker绑定到从INotifyPropertyChanged继承的对象-以下是DateTime属性的代码

private DateTime\u startDate;
公共日期时间起始日期
{
获取{return\u startDate;}
设置
{
if(DateTime.Compare(值,_startDate)==0)
{
返回;
}
_startDate=值;
OnPropertyChanged();
}
}
//公共日期时间起始日期{get;set;}
私有日期时间_endDate;
公共日期时间结束日期
{
获取{return\u endDate;}
设置
{
if(DateTime.Compare(值,_endDate)==0)
{
返回;
}
_endDate=值;
OnPropertyChanged();
}
}
公共事件属性更改事件处理程序属性更改;
void OnPropertyChanged([CallerMemberName]字符串propertyName=null)
{
var handler=PropertyChanged;
if(处理程序!=null)
{
处理程序(这是新的PropertyChangedEventArgs(propertyName));
}
}
在表格页我有这个

DatePicker startDate=新的日期选择器
{
BindingContext=uCoSafe,
Format=“D”
};
SetBinding(DatePicker.DateProperty,新绑定(“startDate”,BindingMode.OneWayToSource));
startDate.PropertyChanged+=(发件人,e)=>
{
uCoSafe.EndDate=uCoSafe.StartDate.AddDays(1);
};
MyCoLabel endDateLbl=新的MyCoLabel(1,“结束日期”);
日期选择器endDate=新的日期选择器
{
BindingContext=uCoSafe,
Format=“D”
};
endDate.SetBinding(DatePicker.DateProperty,新绑定(“StartDate”,BindingMode.TwoWay));
这一切都很好。如果更改开始日期,则会更新结束日期

我还想要它,如果手动更改结束日期,则不能在开始日期之前设置

我试过这个

endDate.PropertyChanged+=(发件人,e)=>
{

如果(uCoSafe.EndDate.Date您对
EndDate
的绑定出现错误。您写道:

endDate.SetBinding(DatePicker.DateProperty, new Binding("StartDate", BindingMode.TwoWay));
你可能是说:

endDate.SetBinding(DatePicker.DateProperty, new Binding("EndDate", BindingMode.TwoWay));
                                                        ^^^^^^^^^
这会让你回到正轨


现在,在这种情况下,我要做的不是在出现错误时显示警报,而是通过将
endDate
MinimumDateProperty
绑定到
uCoSafe.StartDate
,来防止用户犯这样的错误。这最终可能会带来更好的用户体验,仍然是这样。

Doh!!!cop的陷阱y和粘贴!感谢您选择它,也感谢MinimumDate属性的建议,它可以完美地工作。请记住,如果已经设置了日期,更新MinimumDate将不会“修复”要考虑的日期。您仍然必须在提交时进行验证。@AnthonyMills在选择器上设置
MinimumDate
将更新
date
属性,以确保
MinimumDate
@StephaneDelcroix我有一个第二个控件的
MinimumDate
绑定为fir的
日期的页面我向你保证,我可以将第一个控件设置为第二个之后,第二个控件不会更新。但是绑定的规则可能与直接设置值不同?