Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,114 @@
**[View document in Syncfusion Xamarin Knowledge base](https://www.syncfusion.com/kb/12276/how-to-reset-the-swipe-using-mvvm-in-xamarin-forms-listview-sflistview)**


## Sample

```xaml
<ContentPage.Resources>
<ResourceDictionary>
<local:SwipingBoolToImageConverter x:Key="BoolToImageConverter"/>

<DataTemplate x:Name="HeaderTemplate" x:Key="HeaderTemplate">
<Grid BackgroundColor="#4CA1FE" HeightRequest="45">
<Label LineBreakMode="NoWrap" Margin="10" Text="Inbox" FontAttributes="Bold" FontSize="18" TextColor="White" HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid>
</DataTemplate>

<DataTemplate x:Name="ItemTemplate" x:Key="ItemTemplate">
<code>
. . .
. . .
<code>
</DataTemplate>
</ResourceDictionary>
</ContentPage.Resources>

<sync:SfListView x:Name="listView" ItemsSource="{Binding InboxInfo}" ItemTemplate="{StaticResource ItemTemplate}" HeaderTemplate="{StaticResource HeaderTemplate}" AllowSwiping="True" SelectionMode="None" IsStickyHeader="True" SwipeOffset="120" SwipeThreshold="30" ItemSize="100" HeaderSize="50" >
<sync:SfListView.RightSwipeTemplate>
<DataTemplate x:Name="RightSwipeTemplate">
<code>
. . .
. . .
<code>
</DataTemplate>
</sync:SfListView.RightSwipeTemplate>
</sync:SfListView>

C#:

void OnEvent(object sender, object eventArgs)
{
if (Command == null)
{
return;
}

object resolvedParameter = null;
if (CommandParameter != null)
{
resolvedParameter = new CustomCommandParameter((sender as ImageButton).BindingContext, CommandParameter as SfListView);
}

if (Command.CanExecute(resolvedParameter))
{
Command.Execute(resolvedParameter);
}
}

static void OnEventNameChanged(BindableObject bindable, object oldValue, object newValue)
{
var behavior = (EventToCommandBehavior)bindable;
if (behavior.AssociatedObject == null)
{
return;
}

string oldEventName = (string)oldValue;
string newEventName = (string)newValue;

behavior.DeregisterEvent(oldEventName);
behavior.RegisterEvent(newEventName);
}

internal class CustomCommandParameter
{
public SfListView ListView { get; set; }
public object CommandParameter { get; set; }

public CustomCommandParameter(object commandParameter, SfListView sfListView)
{
CommandParameter = commandParameter;
ListView = sfListView;
}
}

ViewModel.cs:

public Command<object> SetFavoriteCommand { get; set; }

SetFavoriteCommand = new Command<object>(SetFavorites);

private void SetFavorites(object obj)
{
var customCommandParameter = obj as CustomCommandParameter;
(customCommandParameter.CommandParameter as ListViewInboxInfo).IsFavorite = !(customCommandParameter.CommandParameter as ListViewInboxInfo).IsFavorite;
customCommandParameter.ListView.ResetSwipe();
}

Converter:
public class SwipingBoolToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
return ImageSource.FromResource("ListViewXamarin.Images.Favorites.png");
else
return ImageSource.FromResource("ListViewXamarin.Images.InboxIcon.png");
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
```