#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");
}