如何知道您在Xamarin表单中的CarouselView上使用哪个指示器?
我可以使用CarouselView成功加载项目!是的,到目前为止还不错。但是现在当我到达第二项时,我尝试做一个只会发生在第二项索引中的特定函数 现在我似乎已经知道了当我在第二页的时候,虽然日志在日志中写了很多东西,但是当我转到第三页,或者回到第一页的时候,我已经记不清我在哪里了如何知道您在Xamarin表单中的CarouselView上使用哪个指示器?,xamarin,xamarin.forms,xamarin.android,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我可以使用CarouselView成功加载项目!是的,到目前为止还不错。但是现在当我到达第二项时,我尝试做一个只会发生在第二项索引中的特定函数 现在我似乎已经知道了当我在第二页的时候,虽然日志在日志中写了很多东西,但是当我转到第三页,或者回到第一页的时候,我已经记不清我在哪里了 <CarouselView BackgroundColor="Transparent" HorizontalScrollBarVisibility="Nev
<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>
我需要在前端添加什么逻辑才能成功监视第2页上的im?有一个CenterItemIndex
属性,告诉您哪个项目在中心视图中
或者,当我尝试制作动画时,您可以使用事件not lookin smooth(不平滑)。由于某些原因,它无法进行平滑着色。你在代码中看到的“ParentView”是我更改颜色的视图的x:名称,它不仅在日志中给了我一个指示器,而且还将其垃圾邮件发送了8次以上。我相信这就是问题所在。我试着用一个布尔值来解决这个问题,但它仍然显示错误,通常滚动事件会在滚动发生时触发多次。这就是为什么您可能希望使用CurrentItemChanged。是的,但那一个没有“CenterItemIndex”。
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;
}
}