0

我正在使用 Xamarin 表单(版本 5)中可用的轮播视图控件。就我而言,我在轮播视图中使用了 Listviews。如果通过向左或向右滑动来滚动它可以正常工作,但是如果我使用按钮单击以编程方式为轮播视图设置 ScrollTo 或 Position 属性,那么尽管我正在设置单个增量值,但它会滚动多次。

我添加了此处提到的 SnapPointsType="MandatorySingle"

另一个问题是,如果我当前的轮播位置为零并且移动到最后一个位置或更多,那么一个不工作。

<AbsoluteLayout Margin="2" BackgroundColor="Transparent"> 
                <CarouselView 
                 x:Name="MyCarousalView"
                 AbsoluteLayout.LayoutBounds="0,0,1,1"
                 AbsoluteLayout.LayoutFlags="All" 
                 Scrolled="CarouselViewScrolled">
                        <CarouselView.ItemsLayout>
                            <LinearItemsLayout Orientation="Horizontal" ItemSpacing="0" SnapPointsType="MandatorySingle"  />
                        </CarouselView.ItemsLayout>
                  <CarouselView.ItemTemplate>
                   <DataTemplate>
                        <ListView
                        HorizontalOptions="FillAndExpand"
                        VerticalOptions="FillAndExpand" 
                        ItemsSource="{Binding .}"  
                        x:FieldModifier="public">
                                    <ListView.ItemTemplate>
                                        <DataTemplate>
                                            <ViewCell Tapped="ViewCellTapped">
                                                <StackLayout Padding="0">
                                                    <StackLayout Padding="20,1" VerticalOptions="StartAndExpand" Spacing="0" >
                                                        <Label
                                                        FontSize="16"    
                                                        Text="{Binding Description}" 
                                                        FontAttributes="Bold"/>
                                                        <Label
                                                        FontSize="14"   
                                                        Text="{Binding CreatedDate}"     />
                                                    </StackLayout>
                                                    <Label HorizontalOptions="FillAndExpand" Padding="0" HeightRequest="1" BackgroundColor="#D4D4D4"/>
                                                </StackLayout>
                                            </ViewCell>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>
                            </DataTemplate>
                        </CarouselView.ItemTemplate>
                    </CarouselView> 
                </AbsoluteLayout>

下一个按钮点击事件

private void NextClicked(object sender, EventArgs e)
        { 
            MyCarousalView.ScrollTo((MyCarousalView.Position + 1) < _weekDaysList.Count ? MyCarousalView.Position + 1 : 0);
        }

轮播视图绑定:

  List<List<Note>> _myList;
    _myList=getData(); //based on service response
     MyCarousalView.ItemsSource = null;
    MyCarousalView.ItemsSource = _myList;

带有问题图像的屏幕录制

屏幕视频

如果有任何解决方案/解决方法,请告诉我。谢谢

4

0 回答 0