【问题标题】:CalendarDatePicker returns null when selecting the same date second timeCalendarDatePicker 在第二次选择相同的日期时返回 null
【发布时间】:2017-05-12 07:16:52
【问题描述】:

我在我的 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>

【问题讨论】:

    标签: xaml mvvm uwp


    【解决方案1】:

    我已通过在转换器中检查 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);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多