I’m currently working on implementing a CarouselView in .NET MAUI and want the position be changed by buttons rather than scrolling.
Incrementing works just fine, decrementing however seems to malfunction.
CarouselView in View:
<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>
Code in 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}");
}
I’ve tried to follow the value with Debug.WriteLine.
The output is as expected when moving up three times:
Increment position in carousel: 1
Increment position in carousel: 2
Increment position in carousel: 3
After decrementing three times, however, the output is the following:
Decrement position in carousel: 2
Decrement position in carousel: 2
Decrement position in carousel: 2
Does anybody understand, what is happening here?
user25033240 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.