SwipeCardView icon indicating copy to clipboard operation
SwipeCardView copied to clipboard

[Enhancement] Add EmptyView property

Open jfversluis opened this issue 6 years ago • 6 comments

It would be great if an EmptyView property was added which can take in a ContentView that is shown whenever there are no items or no items left. Basically, Tinder saying like: "you swiped through all your matches, come back later".

jfversluis avatar Dec 05 '18 07:12 jfversluis

This is a cool idea! I will add it to the new features list. Thanks!

markolazic88 avatar Dec 05 '18 12:12 markolazic88

If I can find some time I will see to contribute something(s) myself 🙂

jfversluis avatar Dec 05 '18 12:12 jfversluis

Hello, just wondering with the current release how can I identify when there are no more cards to swipe? maybe to execute a command or reload the ItemSource when this happens #Thanks

bgaprogrammer avatar Jan 19 '20 15:01 bgaprogrammer

@bgaprogrammer In your OnSwipedCommand method you could check if the swiped item equals to the last item in ItemsSource:

private void OnSwipedCommand(SwipedCardEventArgs eventArgs) { var item = eventArgs.Item as string; var noMoreItemsToSwipe = item == CardItems.LastOrDefault(); }

markolazic88 avatar Jan 20 '20 13:01 markolazic88

Thanks @markolazic88 that did the trick.

Regarding reloading the ItemSource list, I've noticed there is some kind of issue with the card rendering. In my scenario I'm pulling new items from my API and replacing the entire ItemSource, the problem is that the last card visible to the user continues visible despite I changed the whole ItemSource list, any idea how to refresh the current visible card to the new one (top one)?

I've tried assiging the TopItem to the First one of the new list, but don't work

bgaprogrammer avatar Jan 20 '20 14:01 bgaprogrammer

Imho an 'empty' card should be handled by the application programmer by pushing one at the end of the stack and disable any functionality in the bindings by checking whether it's the end card, instead of being built into the component (which would complicate it unnecessarily). The app programmer also has a choice of adding a UI element below the deck that gets drawn when the deck is empty, while hiding the swipe view when empty.

The recent fixes to swipe view will set TopItem to null when the deck is empty, making it easy to use bindings to detect this (something like IsVisible={Binding TopItem, Source={x:Reference myDeck}, Converter={StaticResource IsNullConverter / IsNotNullConverter}}.

So TLDR: I don't think it'd be a good idea to build this functionality into the swipe view itself, as it can be handled by the app programmer.

Tommigun1980 avatar Jul 21 '20 06:07 Tommigun1980