我正在使用绑定到Property的CalendarDatePicker,以及在我的ViewModel中绑定到方法的Closed事件。 LoadPage方法使用SelectedDate属性来加载一些数据。一切都工作得很好,除了我试图选择已经选择的相同日期的时间。在转换器中,我可以看到所选的值为null,并且我得到一个异常,因为它无法将null转换为DateTimeOffset。知道为什么选择日期最终为空吗?以及如何解决这个问题?
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var dateoffset = (DateTimeOffset)value;
return dateoffset.Date;
}
...
<CalendarDatePicker x:Bind ViewModel.SelectedDate,
Converter={StaticResource DateTimeConverter}, Mode=TwoWay}"
Closed="{x:Bind ViewModel.LoadPage}">
</CalendarDatePicker>
答案 0 :(得分:0)
我通过在converter中检查null并返回DateTime.MinValue值,然后在属性setter中引发PropertyChanged事件来修复它。 这不是很好,我欢迎更好的解决方案。
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value == null) return DateTime.MinValue;
DateTimeOffset sourceTime = (DateTimeOffset)value;
DateTime targetTime = sourceTime.DateTime;
return targetTime;
}
public DateTime CurrentDate
{
get { return _currentDate; }
set
{
if (value == DateTime.MinValue)
{
RaisePropertyChanged(nameof(CurrentDate));
return;
}
Set(ref _currentDate, value);
}
}