Category / Section
How to show or hide drag indicator based on the DragStartMode in Xamarin.Forms ListView (SfListView)
1 min read
You can handle the DragIndicatorView visibility based on DragStartMode by using the converter in the Xamarin.Forms SfListView.
XAML
Set the converter to the IsVisible property of DragIndicatorView.
<syncfusion:SfListView x:Name="listView" Grid.Row="1" ItemSize="60" BackgroundColor="#FFE8E8EC" GroupHeaderSize="50" ItemsSource="{Binding ToDoList}" DragStartMode="OnHold" SelectionMode="None"> <syncfusion:SfListView.ItemTemplate> <DataTemplate> <Frame HasShadow="True" BackgroundColor="White" Padding="0"> <Frame.InputTransparent> <OnPlatform x:TypeArguments="x:Boolean" Android="True" WinPhone="False" iOS="False"/> </Frame.InputTransparent> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="60" /> </Grid.ColumnDefinitions> <Label x:Name="textLabel" Text="{Binding Name}" FontSize="15" TextColor="#333333" VerticalOptions="Center" HorizontalOptions="Start" Margin="5,0,0,0" /> <syncfusion:DragIndicatorView Grid.Column="1" ListView="{x:Reference listView}" HorizontalOptions="Center" VerticalOptions="Center" IsVisible="{Binding DragStartMode, Source={x:Reference listView},Converter={StaticResource dragValueConverter}}"> <Grid Padding="10, 20, 20, 20"> <Image Source="DragIndicator.png" VerticalOptions="Center" HorizontalOptions="Center" /> </Grid> </syncfusion:DragIndicatorView> </Grid> </Frame> </DataTemplate> </syncfusion:SfListView.ItemTemplate> </syncfusion:SfListView>
C#
Converter to return true or false based on the DragStartMode.
namespace ListViewXamarin { public class DragValueConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var dragMode = (DragStartMode)value; if (dragMode == DragStartMode.OnHold || dragMode == DragStartMode.OnDragIndicator) return true; else return false; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }