Ticket T1284306
Visible to All Users

DateNavigator was working fine without any error with v20.2

created 4 days ago (modified 4 days ago)

Hello

This is XAML code

XAML
<dxe:DateNavigator x:Name="dnCalendar" IsMultiSelect="False" HighlightSpecialDates="True" MinValue="{Binding MinDate, Mode=TwoWay}" MaxValue="{Binding MaxDate, Mode=TwoWay}" FocusedDate="{Binding SelectedDate, Mode=TwoWay}" SpecialDates="{Binding IntervalDates, Mode=OneWay}" />
C#
public DateTime? MinDate { get; set; } public DateTime? MaxDate { get; set; } DateTime? mSelectedDate = DateTime.Now; public DateTime? SelectedDate { get => mSelectedDate; set { if (mSelectedDate != value) { //mSelectedDate = value; try { UpdateCalendarBoldDates().GetAwaiter(); FillLogIntervals().GetAwaiter(); } catch (Exception ex) { ex.Log("Error while updating selected date"); } if (value == null || (value.Value.Date >= MinDate && value.Value.Date <= MaxDate)) mSelectedDate = value; else mSelectedDate = MaxDate; ScrollToDate?.Invoke(mSelectedDate); } } } public async Task UpdateCalendarBoldDates() { if (IsIntervalTypeChanged || !IntervalDates.HasRecords() || (LogIntervals.Any(c => c.InsertionTime.Date == DateTime.Now.Date) && !IntervalDates.Any(c => c.Date.Date == DateTime.Now.Date))) { IntervalDates = await Task.Run(() => dbRepository.LogIntervalRepository.GetLogIntervalDates(CurrentIntervalType).ToObservable()); if (IntervalDates.HasRecords()) { MinDate = IntervalDates.Min(); MaxDate = IntervalDates.Max(); } else { MinDate = DateTime.Now; MaxDate = DateTime.Now; } } }

This was old code that was working fine until we upgraded dlls to 24.1.5.

Now we're having this exception

Call Stack
System.Exception HResult=0x80131500 Message=Can only change SelectedDates collection in multiple selection mode. Use FocusedDate in single select mode. Source=DevExpress.Xpf.Core.v24.1 StackTrace: at DevExpress.Xpf.Editors.DateNavigator.SingleSelectionNavigationStrategy.CheckSelectedDates() at DevExpress.Xpf.Editors.DateNavigator.DateNavigator.OnSelectedDatesChanged(Object sender, NotifyCollectionChangedEventArgs e) at System.Collections.ObjectModel.ObservableCollection1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) at System.Collections.ObjectModel.ObservableCollection1.RemoveItem(Int32 index) at System.Collections.ObjectModel.Collection1.Remove(T item) at DevExpress.Xpf.Editors.DateNavigator.DateNavigator.CoerceSelectedDates(Object value) at System.Windows.DependencyObject.ProcessCoerceValue(DependencyProperty dp, PropertyMetadata metadata, EntryIndex& entryIndex, Int32& targetIndex, EffectiveValueEntry& newEntry, EffectiveValueEntry& oldEntry, Object& oldValue, Object baseValue, Object controlValue, CoerceValueCallback coerceValueCallback, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, Boolean skipBaseValueChecks) at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType) at System.Windows.DependencyObject.CoerceValue(DependencyProperty dp) at DevExpress.Xpf.Editors.DateNavigator.DateNavigator.<>c.<.cctor>b__42_22(DependencyObject d, DependencyPropertyChangedEventArgs e) at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e) at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e) at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args) at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType) at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue) at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange) at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange) at MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(Int32 k, ICollectionView collectionView, Object newValue, Boolean isASubPropertyChange) at MS.Internal.Data.ClrBindingWorker.OnSourcePropertyChanged(Object o, String propName) at System.Windows.WeakEventManager.ListenerList1.DeliverEvent(Object sender, EventArgs e, Type managerType) at System.ComponentModel.PropertyChangedEventManager.OnPropertyChanged(Object sender, PropertyChangedEventArgs args) at bitb.Utils.UI.NotifyUIBase.RaisePropertyChanged(String propertyName) in D:\BradWilson\projects\bitB4\bitb\bitb.Utils\UI\NotifyUIBase.cs:line 25 at bitB.ViewModels.MainViewModel.set_MinDate(Nullable`1 value) in D:\BradWilson\projects\bitB4\bitb\bitBWpf\ViewModels\MainViewModel.cs:line 4281 at bitB.ViewModels.MainViewModel.<UpdateCalendarBoldDates>d__964.MoveNext() in D:\BradWilson\projects\bitB4\bitb\bitBWpf\ViewModels\MainViewModel.cs:line 4438 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at bitB.ViewModels.MainViewModel.<InitializeTimerIntervalAsync>d__959.MoveNext() in D:\BradWilson\projects\bitB4\bitb\bitBWpf\ViewModels\MainViewModel.cs:line 4332 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at bitB.ViewModels.MainViewModel.<InitializeTimerInterval>d__958.MoveNext() in D:\BradWilson\projects\bitB4\bitb\bitBWpf\ViewModels\MainViewModel.cs:line 4320

What do I do to fix this error. Please help us. Thank you.

Answers approved by DevExpress Support

created 4 days ago

Hello,

Thank you for the description and call stack.

In a general case, we recommend you use FocusedDate when Multiple Date selection is disabled for DateNavigator. However, it looks like the issue occurs even if you use FocusedDate. That said, I created a separate thread for the issue: T1284373 - DateNavigator with IsMultiselect set to False throws an exception when MinValue and MaxValue are set to a range that does not include FocusedDate. We will research this issue and update that thread once we have news.

Regards,
Marc

    Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

    Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.