Интерактивное представление карусели в xamarin.fourm

#xamarin.forms #xamarin.forms.carouselview

Вопрос:

У меня есть карусель, которая отлично работает. все, что я хочу, это при нажатии на изображение в этой карусели, если имя изображения «monthly.jpg» затем отобразите предупреждение или перейдите или …

мой код xaml выглядит следующим образом:

 <CarouselView x:Name="CV">
    <CarouselView.ItemTemplate>
        <DataTemplate>
            <Frame WidthRequest="400">
                <Frame
                    BackgroundColor="Red"
                    HasShadow="True"
                    HeightRequest="240"
                    WidthRequest="300"
                    HorizontalOptions="CenterAndExpand"
                    CornerRadius="10"
                    Margin="10"
                    Padding="0">
                    
                    <Grid>
                        <StackLayout BackgroundColor="White">
                            <Image
                                Source="{Binding imgSource}"
                                Aspect="AspectFill"
                                ClassId="{Binding imgSource}"
                                HeightRequest="350">
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer
                                        Tapped="TapGestureRecognizer_OnTapped"
                                        NumberOfTapsRequired="1">

                                    </TapGestureRecognizer>
                                </Image.GestureRecognizers>
                            </Image>
    ....
 

и мой код таков:

 private void TapGestureRecognizer_OnTapped(object sender, EventArgs e)
{
    //string text = ((Image)sender).ClassId;

    Image image = (Image)sender;
    string imageString = image.ClassId;

    if (imageString == "monthly.jpg")
    {
        DisplayAlert("Go Go", "Please Try Egain", "Continue");
    }
}
 

но когда я нажимаю на изображение, ничего не происходит.
где я ошибаюсь??
правильно ли я работал с classID или как?

Комментарии:

1. Есть ли какая-либо ошибка или предупреждение в выводе VS, когда появляется эта страница или когда вы нажимаете на изображение? Если вы поместите точку останова в начало TapGestureRecognizer_Tapped, достигнута ли эта точка останова? (Или аналогично, Отладка. Напишите немного текста, посмотрите, появится ли он в области вывода Visual Studio.)

2. вы проверили фактическое значение ClassId в отладчике? Скорее всего, это не то, что вы думаете.

3. Нет, Стук никогда не достигал!

4. как это проверить, если код никогда не распознает нажатие?

5. вы можете попробовать переместить распознаватель жестов в стек или сетку вместо изображения

Ответ №1:

Спасибо за все ответы и время, которое вы потратили на решение моей проблемы. в любом случае я изменил свой жест постукивания, чтобы он срабатывал в сетке, и дал свой идентификатор класса сетки. программа работает и сейчас.

 private void TapGestureRecognizer_Tapped_1(object sender, EventArgs e)
        {
            var check = (Grid)sender;

            string imageString = check.ClassId;

            if (imageString == "daily check")
            {
                DisplayAlert("Day", "Please Try Egain", "Continue");
            }