Xaml 第二次选择同一日期时,CalendarDatePicker返回null

Xaml 第二次选择同一日期时,CalendarDatePicker返回null,xaml,mvvm,uwp,Xaml,Mvvm,Uwp,我在ViewModel中使用绑定到属性的CalendarDatePicker和绑定到方法的Closed事件。LoadPage方法使用SelectedDate属性加载一些数据。除了我试着选择已经选择的日期外,一切都很顺利。在转换器中,我可以看到拾取的值为null,并且我得到一个异常,因为它不能将null转换为DateTimeOffset。知道为什么拾取的日期最终为空吗?如何解决这个问题 public object ConvertBack(object value, Type targetType,

我在ViewModel中使用绑定到属性的CalendarDatePicker和绑定到方法的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>
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);
        }
    }