Поведение VisualStateGroup в CarouselView ломается при помещении в Horizontal Layout
Хотел сделать прокрутку времени похожую как на IOS:
Используя несколько CarouselView в горизонтальных макетах таких как StackLayout или же Grid получается что в первом работает корректно. А в последующих отображается криво. Притом что во FlexLayout отображаются корректно первые две:
В чём может быть причина данной проблемы?
XAML Код
<ContentView.Resources>
<ResourceDictionary>
<Style x:Key="stackLayoutStyle" TargetType="StackLayout">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="PreviousItem">
<VisualState.Setters>
<Setter Property="Opacity"
Value="0.30" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="CurrentItem">
<VisualState.Setters>
<Setter Property="Scale"
Value="1.1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NextItem">
<VisualState.Setters>
<Setter Property="Opacity"
Value="0.30" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DefaultItem">
<VisualState.Setters>
<Setter Property="Opacity"
Value="0.30" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
<Style x:Key="carouselViewStyle" TargetType="CarouselView">
<Setter Property="HeightRequest" Value="100"/>
<Setter Property="BackgroundColor" Value="Yellow"/>
<Setter Property="PeekAreaInsets" Value="40"/>
</Style>
</ResourceDictionary>
</ContentView.Resources>
<ContentView.Content>
<StackLayout>
<Label
FontSize="50"
TextColor="Black"
Text="{Binding CurrentTime}"
HorizontalOptions="CenterAndExpand"/>
<FlexLayout
Direction="Row">
<CarouselView
ItemsSource="{Binding HoursTimes}"
CurrentItem="{Binding CurrentHour}"
Style="{StaticResource carouselViewStyle}">
<CarouselView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Center" SnapPointsType="Mandatory" Orientation="Vertical" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="viewModels:TimeModel">
<StackLayout Style="{StaticResource stackLayoutStyle}">
<Label
Text="{Binding Num}"
TextColor="Black"
HorizontalOptions="Center"/>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<CarouselView
ItemsSource="{Binding LeftMinTimes}"
CurrentItem="{Binding CurrentLeftMinute}"
Style="{StaticResource carouselViewStyle}">
<CarouselView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Center" SnapPointsType="Mandatory" Orientation="Vertical" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="viewModels:TimeModel">
<StackLayout
CompressedLayout.IsHeadless="True"
Style="{StaticResource stackLayoutStyle}">
<Label
Text="{Binding Num}"
TextColor="Black"
HorizontalOptions="Center"/>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<CarouselView
ItemsSource="{Binding RightMinTimes}"
CurrentItem="{Binding CurrentRightMinute}"
Style="{StaticResource carouselViewStyle}">
<CarouselView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Center" SnapPointsType="Mandatory" Orientation="Vertical" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="viewModels:TimeModel">
<StackLayout
CompressedLayout.IsHeadless="True"
Style="{StaticResource stackLayoutStyle}">
<Label
Text="{Binding Num}"
TextColor="Black"
HorizontalOptions="Center"/>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<CarouselView
ItemsSource="{Binding LeftSecondsTimes}"
CurrentItem="{Binding CurrentLeftSecound}"
Style="{StaticResource carouselViewStyle}">
<CarouselView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Center" SnapPointsType="Mandatory" Orientation="Vertical" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="viewModels:TimeModel">
<StackLayout
CompressedLayout.IsHeadless="True"
Style="{StaticResource stackLayoutStyle}">
<Label
Text="{Binding Num}"
TextColor="Black"
HorizontalOptions="Center"/>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<CarouselView
ItemsSource="{Binding RightSecondsTimes}"
CurrentItem="{Binding CurrentRightSecound}"
Style="{StaticResource carouselViewStyle}">
<CarouselView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Center" SnapPointsType="Mandatory" Orientation="Vertical" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="viewModels:TimeModel">
<StackLayout
CompressedLayout.IsHeadless="True"
Style="{StaticResource stackLayoutStyle}">
<Label
Text="{Binding Num}"
TextColor="Black"
HorizontalOptions="Center"/>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
</FlexLayout>
</StackLayout>
</ContentView.Content>
Источник: Stack Overflow на русском