Как узнать, какой индикатор у вас включен с CarouselView в Xamarin Forms? - PullRequest
1 голос
/ 20 июня 2020

Я использую CarouselView и могу успешно загружать элементы! Да, пока все хорошо. Но теперь, когда я достигаю 2-го элемента, я пытаюсь выполнить специальную функцию c, которая будет выполняться только во 2-м индексе.

Прямо сейчас я, кажется, понял, когда я на 2-й странице, хотя журнал записывает много вещей в журнал, но когда я перехожу на 3-ю страницу или возвращаюсь на 1-ю страницу, я потерял счет (программно) того, где я нахожусь.

   <CarouselView BackgroundColor="Transparent"
                          HorizontalScrollBarVisibility="Never"
                          IndicatorView="indicatorView"
                          VerticalOptions="CenterAndExpand"
                          Margin="25,0"
                          Scrolled="CarouselView_Scrolled"
                          ItemsSource="{Binding BindingContext.Intro, Source={x:Reference ParentView}}">
                <CarouselView.ItemsLayout>
                    <LinearItemsLayout Orientation="Horizontal"
                                       SnapPointsAlignment="Center" 
                                       SnapPointsType="MandatorySingle"/>
                </CarouselView.ItemsLayout>
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                                <Label Text="{Binding Text}"
                                       FontSize="Large"
                                       HorizontalTextAlignment="Start"
                                       FontFamily="Helvetica Neue"
                                       TextColor="DimGray"
                                       FontAttributes="None" />

                        </AbsoluteLayout>
                    </DataTemplate>
                </CarouselView.ItemTemplate>
            </CarouselView>  

Код за:

    async void CarouselView_Scrolled(System.Object sender, Xamarin.Forms.ItemsViewScrolledEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine(e.CenterItemIndex);

        if (e.CenterItemIndex == 1)
        {
            if (Transitioning == false)
            {
                Transitioning = true;
                await ParentView.ColorTo(Color.White, Color.FromHex("#161825"), c =>
                {
                    ParentView.BackgroundColor = c;
                    Transitioning = false;
                }, 500);
            }
        }
        else
        {
            Transitioning = true;
            await ParentView.ColorTo(Color.FromHex("#161825"), Color.White, c => ParentView.BackgroundColor = c, 500);
            Transitioning = false;
        }
    }

Какой лог c мне нужно добавить в свой интерфейс, чтобы успешно отслеживать, если я на странице 2?

1 Ответ

1 голос
/ 20 июня 2020

ItemsViewScrolledEventArgs имеет свойство CenterItemIndex, которое сообщает вам, какой элемент находится в центральном представлении

, или вы можете использовать CurrentItemChanged событие

...