Refresh and editing
Add pull-to-refresh, swipe and context actions, prefetching, selection, and reordering.
Collection interactions build on the same item source and recycled cells. Keep the commands on the ViewModel and let the collection supply the current item as their parameter.
Pull to refresh
RefreshCommand.CanExecute controls whether the native refresh control accepts a pull. An allowed pull sets the bound state to true before running the command. Clear it in a finally block so a failed refresh does not leave the spinner active.
Swipe and context actions
Swipe actions apply to list layouts. Choose SwipeSide.Leading or Trailing; destructive trailing actions support the native full-swipe behavior. Swipe and context-menu icons accept local ImageSource values. Context menu commands receive the row item whenever their explicit CommandParameter is null.
ItemPreview can build a separate floating preview for the context menu. PreviewShape changes the lifted row platter, and PreviewCommand handles tapping the preview.
Reordering and edit selection
Setting ReorderCommand enables drag-to-reorder. SkeleKit applies the move to a mutable observable source before invoking the command with ItemMove<T>:
ItemMove<T> contains the item and its old and new section/index positions. A long-press context menu owns the normal drag gesture, but the edit-mode reorder handle remains available.
Use an ObservableCollection<T> for SelectedItems. Taps update it while editing, and programmatic collection changes update the native checkmarks.
Prefetching
Prefetch maps an approaching item to a remote image URL. The collection asks the app's IImageLoader to warm that URL before the cell appears and cancels work when appropriate:
Keyboard behavior
AvoidsKeyboard defaults to true. KeyboardDismiss controls how a drag dismisses the keyboard, matching the behavior available on ScrollView.
See the ScrollView keyboard guide for the matching viewport behavior.