Xaml 第二次选择同一日期时,CalendarDatePicker返回null
我在ViewModel中使用绑定到属性的CalendarDatePicker和绑定到方法的Closed事件。LoadPage方法使用SelectedDate属性加载一些数据。除了我试着选择已经选择的日期外,一切都很顺利。在转换器中,我可以看到拾取的值为null,并且我得到一个异常,因为它不能将null转换为DateTimeOffset。知道为什么拾取的日期最终为空吗?如何解决这个问题Xaml 第二次选择同一日期时,CalendarDatePicker返回null,xaml,mvvm,uwp,Xaml,Mvvm,Uwp,我在ViewModel中使用绑定到属性的CalendarDatePicker和绑定到方法的Closed事件。LoadPage方法使用SelectedDate属性加载一些数据。除了我试着选择已经选择的日期外,一切都很顺利。在转换器中,我可以看到拾取的值为null,并且我得到一个异常,因为它不能将null转换为DateTimeOffset。知道为什么拾取的日期最终为空吗?如何解决这个问题 public object ConvertBack(object value, Type targetType,
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>
public object ConvertBack(对象值、类型targetType、对象参数、字符串语言)
{
var dateoffset=(DateTimeOffset)值;
返回日期抵销日期;
}
...
我通过在转换器中检查null并返回DateTime.MinValue值,然后在属性设置器中引发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);
}
}
我通过在转换器中检查null并返回DateTime.MinValue值,然后在属性设置器中引发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);
}
}