How to show or hide the drag indicator like iOS in Xamarin ListView?
Xamarin ListView allows you show or hide the drag indicator like native iOS applications using the visibility property in the ItemDragging event. The following code sample demonstrates how to show or hide the drag indicator.
Xaml
<ContentPage xmlns:syncfusion="clr-namespace:Syncfusion.ListView.XForms;assembly=Syncfusion.SfListView.XForms"> <ContentPage.Behaviors> <local:Behavior/> </ContentPage.Behaviors> <Grid> <Button x:Name="editButton" Text="Click to show drag indicator" Command="{Binding TapCommand}"/> <syncfusion:SfListView x:Name="listView" ItemsSource="{Binding ContactsInfo}" ItemSize="70" DragStartMode="OnHold,OnDragIndicator" SelectionMode="None"> <syncfusion:SfListView.ItemTemplate> <DataTemplate> <Grid> <syncfusion:DragIndicatorView IsVisible="{Binding IndicatorVisible}" ListView="{x:Reference listView}"> <Grid> <Image Source="DragIndicator.png"/> </Grid> </syncfusion:DragIndicatorView> <Label LineBreakMode="NoWrap" Text="{Binding ContactName}"/> <Label LineBreakMode="NoWrap" Text="{Binding ContactNumber}"/> <Label LineBreakMode="NoWrap" Text="{Binding ContactType}"/> </Grid> </DataTemplate> </syncfusion:SfListView.ItemTemplate> </syncfusion:SfListView> </Grid> </ContentPage>
C#
public class ListViewGroupingViewModel { #region Constructor public ListViewGroupingViewModel() { GenerateSource(); TapCommand = new Command<object>(OnTapped); } #endregion private void OnTapped(object obj) { for (int i = 0; i < ContactsInfo.Count; i++) { ContactsInfo[i].IndicatorVisible = true; } } }
class Behavior : Behavior<ContentPage> { ListViewGroupingViewModel viewModel; Button button; public SfListView listview { get; private set; } protected override void OnAttachedTo(ContentPage bindable) { base.OnAttachedTo(bindable); listview = (bindable as ContentPage).FindByName<SfListView>("listView"); button = (bindable as ContentPage).FindByName<Button>("editButton"); viewModel = new ListViewGroupingViewModel(); listview.BindingContext = viewModel; button.BindingContext = viewModel; listview.ItemDragging += Listview_ItemDragging; } private void Listview_ItemDragging(object sender, ItemDraggingEventArgs e) { if (e.Action == Syncfusion.ListView.XForms.DragAction.Drop) { for (int i = 0; i < viewModel.ContactsInfo.Count; i++) { viewModel.ContactsInfo[i].IndicatorVisible = false; } } } protected override void OnDetachingFrom(ContentPage bindable) { base.OnDetachingFrom(bindable); listview.ItemDragging -= Listview_ItemDragging; listview = null; button = null; } }
Sample: Show or hide indicator like native iOS application
Conclusion
I hope you enjoyed learning about how to show or hide the drag indicator like iOS in Xamarin ListView.
You can refer to our Xamarin.Forms ListView feature tour page to know about its other groundbreaking feature representations. You can also explore our Xamarin.Forms ListView documentation to understand how to create and manipulate data.
For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion, you can try our 30-day free trial to check out our other controls.
If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forums, Direct-Trac, or feedback portal. We are always happy to assist you!