2017-05-12 2 views
0

プロパティにバインドされたCalendarDatePickerと、ViewModelの両方でメソッドにバインドされたClosedイベントを使用しています。 LoadPageメソッドは、SelectedDateプロパティを使用して一部のデータを読み込みます。すでに選択されている同じ日付を選択しようとするときを除いて、すべてが正常に動作しています。私は、DateTimeOffsetにnullをキャストすることはできませんので、私は値が選択されたnullと私は例外が表示されることがわかります。日付を選んだ理由が何であれnullになるという考えはありますか?そしてこの問題を解決するには?CalendarDatePickerは、同じ日付を2回目に選択するとnullを返します。

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

私は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); 
     } 
    } 
関連する問題