Коснитесь изображения внутри ListView, мы должны получить значение свойства конкретной строки

#c# #xamarin.forms #cross-platform #gesture #binding-context

#c# #xamarin.forms #кроссплатформенный #жест #привязка-контекст

Вопрос:

У меня есть ListView, он содержит изображение со списком элементов. Когда я нажимаю на изображение, я должен получить ProfileID этой строки.

 <Image Source="{Binding ImageUrl}" x:Name="{Binding ProfileID}" Aspect="AspectFill">
    <Image.GestureRecognizers>
    <TapGestureRecognizer Tapped="imageUserGesture_Tapped"/>
    </Image.GestureRecognizers>
</Image>

private async void imageUserGesture_Tapped(object sender, EventArgs e)
{
    CloseAnimation();
    var img = ((Image)sender);
    var name = img.Name;//How can I read name property ??????
    //var name = e.LoadFromXaml(MatchProfile).Name;
}

  

Ответ №1:

Name это не фактическое свойство, на которое вы можете ссылаться, это просто артефакт XAML (отсюда и префикс «x»). Вместо этого вы можете использовать BindingContext для получения необходимых вам данных

 var img = ((Image)sender);
var context = (MyClassGoesHere)img.BindingContext;
var name = context.ProfileID;
  

Ответ №2:

 <Image Source="{Binding ImageUrl}"
       x:Name="imageUser"
       Aspect="AspectFill">
                                                                
   <Image.GestureRecognizers>
      <TapGestureRecognizer Tapped="imageUserGesture_Tapped"
         Command="{Binding TapCommand}"
         CommandParameter="{Binding ProfileID}"
         NumberOfTapsRequired="1"/>
                                                                
   </Image.GestureRecognizers>

</Image>
  

введите описание изображения здесь