.NET MAUI CarouselView 在 Windows 上位置递减故障

问题描述 投票:0回答:1

我目前正在致力于在 .NET MAUI 中实现 CarouselView,并希望通过按钮而不是滚动来更改位置。

递增工作正常,但递减似乎出现故障。

视图中的轮播视图

<CarouselView Grid.Row="2"
              ItemsSource="{Binding Questions}"
              HorizontalScrollBarVisibility="Never"
              IndicatorView="indicatorView"
              Position="{Binding CarouselViewPosition}"
              EmptyView="No items to display."
              IsBounceEnabled="False"
              Loop="False">
    <CarouselView.ItemsLayout>
        <LinearItemsLayout Orientation="Horizontal"
                           SnapPointsType="MandatorySingle"
                           SnapPointsAlignment="Center" />
    </CarouselView.ItemsLayout>

    <CarouselView.ItemTemplate>
        <DataTemplate>
            <Frame BorderColor="DarkBlue">
                <Label Text="{Binding QuestionContent}" />
            </Frame>
        </DataTemplate>
    </CarouselView.ItemTemplate>
</CarouselView>

ViewModel 中的代码

[ObservableProperty]
private ObservableCollection<Question> _questions = new();

[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(NextQuestionCommand))]
[NotifyCanExecuteChangedFor(nameof(PreviousQuestionCommand))]
private int _carouselViewPosition = 0;

//...

[RelayCommand]
private void OnNextQuestion()
{
    CarouselViewPosition += 1;
    Debug.WriteLine($"Increment position in carousel: {CarouselViewPosition}");
}

[RelayCommand]
private void OnPreviousQuestion()
{
    CarouselViewPosition -= 1;
    Debug.WriteLine($"Decrement position in carousel: {CarouselViewPosition}");
}

我尝试使用 Debug.WriteLine 来跟踪该值。

上移三倍时输出符合预期:

Increment position in carousel: 1
Increment position in carousel: 2
Increment position in carousel: 3

但是,递减 3 次后,输出如下:

Decrement position in carousel: 2
Decrement position in carousel: 2
Decrement position in carousel: 2

有人明白这里发生了什么吗?

windows maui carousel maui-community-toolkit
1个回答
0
投票

绑定似乎已断开,因为超出绑定的索引。

您必须控制CarouselViewPosition

何时 < 0 or >问题.计数

© www.soinside.com 2019 - 2024. All rights reserved.