Foros del Web » Programación para mayores de 30 ;) » .NET »

Xamarin Forms y el manejo de TapGestureRecognizer en un Grid.

Estas en el tema de Xamarin Forms y el manejo de TapGestureRecognizer en un Grid. en el foro de .NET en Foros del Web. Hola comunidad! Por si alguno está familiarizado con el tema. Estoy trabajando con una Grid (7x4) que muestra una imagen y un label en cada ...
  #1 (permalink)  
Antiguo 10/07/2018, 14:07
Avatar de johnix  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 92
Antigüedad: 17 años, 10 meses
Puntos: 0
Xamarin Forms y el manejo de TapGestureRecognizer en un Grid.

Hola comunidad!

Por si alguno está familiarizado con el tema. Estoy trabajando con una Grid (7x4) que muestra una imagen y un label en cada posición, a cada imagen le añado un TapGestureRecognizer que al activarse debería cambiar el texto del control label en la posición de la imagen donde se hace tap. El asunto es que no encuentro la forma de cambiar el texto de la posición donde hago tap, siempre me lo cambia en la primera posición de la grid.

Les comparto parte del código C#:
Cita:
var tgrGrid = new TapGestureRecognizer { NumberOfTapsRequired = 1 };
tgrGrid.Tapped += (s, ex) => {
Grid theGrid = (Grid)s;
((Label)theGrid.Children.ElementAt(1)).Text = "Tapped";
};
gridGeneral.GestureRecognizers.Add(tgrGrid);
Como pueden ver, el control Label es el elemento 1, el 0 sería la Imagen donde se hace Tap y dentro del Gesture se utiliza una referencia al objeto "gridGeneral" como "theGrid".

¿Cómo podría cambiarse el texto del elemento 1 en la celda donde se hace el tap?

De antemano muchas gracias por cualquier ayuda que puedan brindarme.
  #2 (permalink)  
Antiguo 11/07/2018, 00:42
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Xamarin Forms y el manejo de TapGestureRecognizer en un Grid.

No se si te aporte algo, pero los elementos se van numerando 0,1,2,3 x lo que veo, no necesariamente el "1" es el "1" en renglon 1 o renglon 2.. en renglon 3 acaso sea "5".

Mira lo que yo uso para meter una animacion en una celda de un grid, recorriendo todos los elementos para detectar el label que me interesa (identifico el tipo label y luego el classid asignado):

if (grid.Children.Count>0)
{
for (int iT = grid.Children.Count - 1; iT >= 0; --iT)
{
var obj = grid.Children[iT];
var childTypeName = grid.Children[iT].GetType().Name;
var childTypeName2 = grid.Children[iT].ClassId; // UN IDENTIFICADOR QUE LE COLOCO PARA LA CELDA Q ME INTERESA
if (childTypeName == "Label")
{
if (!string.IsNullOrEmpty(childTypeName2))
{
if (childTypeName2.Equals("TEXTOPERSONAL"))
{
obj.BackgroundColor = Color.Violet; //LightGoldenrodYellow;
await Task.Delay(1000);
obj.BackgroundColor = Color.Black ;
}
}

}
}
}//(grid.Children.Count>0)

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:49.