Распознаватель жестов StackLayout не генерирует событие последовательно - PullRequest
0 голосов
/ 08 июля 2019

Я добавил распознаватель жестов в стек, и он не срабатывает каждый раз. Мне нужно нажать несколько раз, чтобы событие было запущено.

xaml:

<StackLayout Orientation="Horizontal">
                    <ImageButton Source="someimage.png" BackgroundColor="Transparent" HorizontalOptions="StartAndExpand" VerticalOptions="Center"/>
                    <StackLayout HorizontalOptions="EndAndExpand" Spacing="10" Orientation="Horizontal">
                        <StackLayout Spacing="0" x:Name="name1">
                            <Image Source="someimage.png" Grid.Column="0" Grid.Row="0"/>
                            <Label Text="some text" Grid.Column="0"  Grid.Row="1" FontSize="8" TextColor="White" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/>
                            <Image Source="someimage.png" Grid.Column="0" Grid.Row="2"/>
                            <Label Text="text" Grid.Column="0" Grid.Row="3" FontSize="8" TextColor="White" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/>
                            <StackLayout.GestureRecognizers>
                                <TapGestureRecognizer NumberOfTapsRequired="1" Command="{Binding Animate}" CommandParameter="{x:Reference name1}"/>
                            </StackLayout.GestureRecognizers>
                        </StackLayout>

            </StackLayout>

viewmodel:

        public ICommand Animate
        {
            get => new Command<StackLayout>(async (stack) => {
                uint timeout = 50;
                await stack.TranslateTo(-15, 0, timeout);
                await stack.TranslateTo(15, 0, timeout);
                await stack.TranslateTo(-9, 0, timeout);
                await stack.TranslateTo(9, 0, timeout);
                await stack.TranslateTo(-5, 0, timeout);
                await stack.TranslateTo(5, 0, timeout);
                await stack.TranslateTo(-2, 0, timeout);
                await stack.TranslateTo(2, 0, timeout);
                stack.TranslationX = 0;
            });
        }

...