Saya menghadapi masalah, saya sedang mengerjakan aplikasi kuis. Singkat cerita, pada rilis sebelumnya, saya menggunakan Tabbedpage tetapi tidak memenuhi semua harapan saya.

Jadi saya memutuskan untuk menulis ulang UI saya dengan CarouselView.

Pada pertanyaan pertama, ketika pengguna memilih jawabannya, jawabannya disorot (hijau jika benar, merah jika salah).

Tapi inilah masalah saya: ketika jawabannya disorot pada pertanyaan 1, untuk alasan yang tidak diketahui pertanyaan 6 juga disorot pada posisi yang sama

<CarouselView x:Name="Carrousel" 
                          Loop="False" 
                          ItemsSource="{Binding FullQuestion}" 
                          IndicatorView="indicatorView"
                          >
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Grid x:Name="FirstGrid">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="auto"/>
                                <RowDefinition Height="0.3*"/>
                                <RowDefinition Height="auto"/>
                                <RowDefinition Height="0.3*"/>
                                <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                            <Label x:Name="Question" Text="{Binding Name}" />
                            <views:MusicButtonView x:Name="MusicButtonView" Grid.Row="1" Margin="10" SongUrl="{Binding ID}" />
                            <Label x:Name="QuestionType" Grid.Row="2" Text="{Binding NameOfQuestion}" />
                        <Grid x:Name="ButtonGrid" Grid.Row="4">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <Button Grid.Row="0" x:Name="btn1" Text="{Binding Lines[0].SongName}" Clicked="OnBtnClick" BackgroundColor="#998A8B8D" BorderColor="White" CornerRadius="1" BorderWidth="2"/>
                            <Button Grid.Row="1" x:Name="btn2" Text="{Binding Lines[1].SongName}" Clicked="OnBtnClick" BackgroundColor="#998A8B8D" BorderColor="White" CornerRadius="1" BorderWidth="2"/>
                            <Button Grid.Row="2" x:Name="btn3" Text="{Binding Lines[2].SongName}" Clicked="OnBtnClick" BackgroundColor="#998A8B8D" BorderColor="White" CornerRadius="1" BorderWidth="2"/>
                            <Button Grid.Row="3" x:Name="btn4" Text="{Binding Lines[3].SongName}" Clicked="OnBtnClick" BackgroundColor="#998A8B8D" BorderColor="White" CornerRadius="1" BorderWidth="2"/>
                        </Grid>
                    </Grid>
                    </DataTemplate>
                </CarouselView.ItemTemplate>
            </CarouselView>
private void Process(QuestionFull data, int index,ref Button btn)
{
        var id = data.QuestionId;
        
        if(!data.IsAnswered)
        {
            btn.BackgroundColor = Color.FromHex("#998A8B8D");
        }

        if (data.ID.Equals(data.Lines[index].SongId))
        {
            btn.BackgroundColor = Color.FromRgb(0, 213, 33);
            data.IsCorrectAnswer = true;
        }
        else
        {
            btn.BackgroundColor = Color.FromRgb(255, 69, 56);
            data.IsCorrectAnswer = false;
        }
        data.IsAnswered = true;
}

Ide saya adalah carouselview menggunakan kembali item untuk menghemat memori. Ini memiliki 5 item dan kemudian menggunakannya kembali? Adakah yang tahu cara menyelesaikannya, atau cara menambah jumlah elemen unik.

-3
Refre 3 April 2021, 23:03

1 menjawab

Jawaban Terbaik

CarouselView didasarkan pada CollectionView, jadi perilaku ini diharapkan.

Silakan lihat komentar ini: XF CarouselView #9200 komentar masalah

1
Mateus Henrique 3 April 2021, 22:18