我目前正在致力于在 .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
有人明白这里发生了什么吗?
绑定似乎已断开,因为超出绑定的索引。
您必须控制CarouselViewPosition
何时 < 0 or >问题.计数