【问题标题】:Xamarin Carousel GestureRecognizers Not WorkingXamarin Carousel GestureRecognizers 不工作
【发布时间】:2019-08-14 15:31:26
【问题描述】:

我想实现一个旋转木马视图滑动手势识别器向左或向右滑动。
但只能识别点击事件,无法捕获手势事件(不触发)。 我需要的是当用户根据滑动事件向左或向右滑动时,我想相应地管理点按钮的不透明度。 我看到那里已经有一些 nuget 包来实现这一点。我不想使用 nuget 包。

我已经尝试过点击事件,点击事件正在触发但不是手势事件

<CarouselView x:Name="CV" ItemsSource="{Binding People}" HeightRequest="200" HorizontalOptions="Center" VerticalOptions="CenterAndExpand" Margin="10" >

                <CarouselView.ItemsLayout>
                    <GridItemsLayout Orientation="Horizontal" SnapPointsAlignment="Center" SnapPointsType="Mandatory"/>
                </CarouselView.ItemsLayout>
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Frame BorderColor="LightGray" CornerRadius="3" HasShadow="False">
                            <Grid>
                                <Grid.GestureRecognizers>
                                    <SwipeGestureRecognizer Direction="Left" Swiped="SwipeGestureRecognizer_OnSwiped" />
                                    <SwipeGestureRecognizer Direction="Right" Swiped="SwipeGestureRecognizer_OnSwiped"/>
                                    <SwipeGestureRecognizer Direction="Up" Swiped="SwipeGestureRecognizer_OnSwiped" />
                                    <SwipeGestureRecognizer Direction="Down" Swiped="SwipeGestureRecognizer_OnSwiped"/>
                                </Grid.GestureRecognizers>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="75"/>
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="*"/>
                                </Grid.RowDefinitions>
                                <Image Grid.Column="0" Grid.Row="0" Source="person" VerticalOptions="Start"/>
                                <StackLayout Grid.Column="1" Grid.Row="1" HorizontalOptions="EndAndExpand" VerticalOptions="EndAndExpand">
                                    <Label Text="{Binding}" FontSize="24" HorizontalOptions="EndAndExpand"/>
                                    <Label Text="Company Address" HorizontalOptions="EndAndExpand"/>
                                    <Label Text="City, State" HorizontalOptions="EndAndExpand"/>
                                </StackLayout>
                            </Grid>
                        </Frame>
                    </DataTemplate>
                </CarouselView.ItemTemplate>
            </CarouselView>

【问题讨论】:

  • Carosuel 应该本机处理滑动手势 - 你为什么要尝试创建自己的?
  • 我应该处理哪个动作。你能分享它的代码吗?

标签: xamarin xamarin.forms


【解决方案1】:

是的,CarouselView 有GestureRecognizers,例如,

<CarouselView>
            <CarouselView.GestureRecognizers>
                <SwipeGestureRecognizer  Swiped="OnSwiped"  />                   
            </CarouselView.GestureRecognizers>
 </CarouselView>

方法OnSwiped

private void OnSwiped(object sender, SwipedEventArgs e)
    {
        if (e.Direction == (e.Direction & SwipeDirection.Left))
        {

        }
    }

【讨论】:

  • 你试过这个吗?我只尝试过点击手势而不是滑动
  • 抱歉,这么晚才回复,您的问题解决了吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-04
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多