CalendarDatePicker在第二次选择相同日期时返回null

时间:2017-05-12 07:16:53

标签: xaml mvvm uwp

我正在使用绑定到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>

1 个答案:

答案 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);
        }
    }