Skip to content

TodoApp.Uno: ListViewBase.IsSwipeEnabled not implemented in Uno (swipe-to-delete non-functional off Windows) #537

Description

@adrianhall

Summary

Views/TodoListPage.xaml's ListView sets IsSwipeEnabled="True", but Uno Platform doesn't implement this property outside of WinUI/Windows:

warning Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.IsSwipeEnabled is not implemented in Uno (https://aka.platform.uno/notimplemented?m=Microsoft.UI.Xaml.Controls.ListViewBase.IsSwipeEnabled) (https://aka.platform.uno/notimplemented)

CI run: https://github.com/CommunityToolkit/Datasync/actions/runs/29093946725 (android, browserwasm, desktop, ios-maccatalyst todoapp-uno jobs - not windows)

This is pre-existing (present before #524/#525's fixes too, confirmed locally), just newly visible now that CI builds every head.

Root cause

This is a known Uno Platform limitation, not a defect in the sample: ListViewBase.IsSwipeEnabled (and the corresponding swipe-to-reveal-actions gesture) is only implemented on the native WinUI/Windows renderer, not on any Skia-based head (android, ios, maccatalyst, browserwasm, desktop). Setting the attribute is effectively a no-op (and a compile-time warning) on every non-Windows head - no swipe gesture is available for users on those platforms.

Suggested fix / options

  1. Remove IsSwipeEnabled="True" from the ListView in Views/TodoListPage.xaml.cs if swipe-to-delete isn't actually relied upon elsewhere, to eliminate dead configuration and the warning.
  2. Or keep it (since it's harmless on Windows and simply ignored elsewhere) and instead suppress the specific Uno0001 diagnostic for this one property with a documented rationale, if the team wants to preserve the Windows-only swipe behavior intentionally.
  3. Or replace it with an Uno-native, cross-platform swipe affordance (e.g., Uno.Toolkit.UI's SwipeContainer/SwipeButton, which the project already references via the Toolkit UnoFeature) if cross-platform swipe-to-delete is actually a desired feature for this sample.

Recommend (1) or (2) as the minimal fix, since this project doesn't currently document swipe-to-delete as an intentional teaching point.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions