void Move(NotifyCollectionChangedEventArgs args)
        {
            var count = args.NewItems.Count;

            if (count == 1)
            {
                // For a single item, we can use NotifyItemMoved and get the animation
                _notifier.NotifyItemMoved(this, AdjustPositionForHeader(args.OldStartingIndex), AdjustPositionForHeader(args.NewStartingIndex));
                return;
            }

            var start = AdjustPositionForHeader(Math.Min(args.OldStartingIndex, args.NewStartingIndex));
            var end   = AdjustPositionForHeader(Math.Max(args.OldStartingIndex, args.NewStartingIndex) + count);

            _notifier.NotifyItemRangeChanged(this, start, end);
        }
 public void NotifyItemMoved(IItemSource group, int localFromIndex, int localToIndex)
 {
     localFromIndex = GetAbsolutePosition(group, localFromIndex);
     localToIndex   = GetAbsolutePosition(group, localToIndex);
     notifier.NotifyItemMoved(this, localFromIndex, localToIndex);
 }