Как получить как длинное, так и короткое нажатие элемента списка в Xamarin.Forms? - PullRequest
0 голосов
/ 15 марта 2020

Мне нужно длительное нажатие и короткое нажатие в списке

Я использую эффекты для длительного нажатия для элементов в списке (ListView / CollectionView) , но , когда это работает короткое нажатие (касание) не!

Мой вопрос : мне нужно создать другую версию эффектов, которая является коротким щелчком, или я могу как-то иметь обе? Я искал везде без какой-либо информации, чтобы помочь мне найти решение ...

Я играл с этим кодом в моем хранилище , не имея возможности заставить оба работать одновременно время.

            <CollectionView
            x:Name="carsCollection"
            ItemsSource="{Binding Cars}"
            SelectionMode="Single"
            SelectionChangedCommand="{Binding TapCommand}"
            SelectionChangedCommandParameter="{Binding Source={x:Reference carsCollection}, Path=SelectedItem}"
            BackgroundColor="Orange">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <ContentView>
                        <StackLayout
                            effects:LongPressedEffect.Command="{Binding Path=BindingContext.LongTapCommand, Source={x:Reference ThisPage}}"
                            effects:LongPressedEffect.CommandParameter="{Binding .}">
                            <Label Text="CollectionView: Long Press works but not normal selection" />
                            <StackLayout.Effects>
                                <effects:LongPressedEffect />
                            </StackLayout.Effects>
                        </StackLayout>
                    </ContentView>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>

ViewModel, содержащий команды: здесь .

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Использование эффекта на ImageButton работало в моем случае:

                    <CollectionView.ItemTemplate>
                        <DataTemplate x:DataType="sharedmodels:Photo">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <ImageButton Source="{Binding ThumbnailUrl, Converter={StaticResource ImageLocalStorageUrlConverter}}"
                                             Command="{Binding Source={x:Reference collectionView}, Path=BindingContext.SelectCommand}" 
                                             CommandParameter="{Binding .}"
                                             effects:LongPressEffect.Command="{Binding Source={x:Reference collectionView}, Path=BindingContext.DeleteCommand}"
                                             effects:LongPressEffect.CommandParameter="{Binding .}">
                                    <ImageButton.Effects>
                                        <effects:LongPressEffect/>
                                    </ImageButton.Effects>
                                </ImageButton>
                            </Grid>
                        </DataTemplate>
                    </CollectionView.ItemTemplate>
0 голосов
/ 16 марта 2020

У меня такой вопрос: нужно ли создавать другую версию эффектов с помощью короткого щелчка или я могу как-то иметь обе? Я искал везде без какой-либо информации, чтобы помочь мне найти решение ...

Вы могли бы сделать это с помощью элемента управления, который имеет событие click вместо stacklayout.

. stpes в ссылке ниже. А затем используйте событие щелчка, чтобы выполнить выстрел. Как сделать жест длинным нажатием в формах Xamarin?

Или вы можете использовать распознаватель жестов касания. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/gestures/tap

...