2 votes

Comment obtenir les enfants d'une ligne de la grille si Grid.Row est connu ?

Je travaille sur une application xamarin.forms et j'ai une question que je n'ai pas pu résoudre.

1) J'ai plusieurs Grid qui contiennent un bouton, une étiquette et une image. Maintenant, lorsque je clique sur le bouton, je veux changer l'image ou la faire pivoter vers le bas. Mais d'une manière ou d'une autre, je ne suis pas capable de le faire.

Mon premier essai a été de récupérer le parent du bouton et de trouver l'image en utilisant FindByName méthode. Mais FindByName retourne null, mais je peux voir la grille dans le parent pendant le débogage.

Mon deuxième essai a consisté à obtenir la rangée de boutons et à trouver toutes les commandes qui se trouvent dans cette rangée. Parce que mon image est dans la même rangée que le bouton.

Ma structure est la suivante

When I click on arrow(i.e image) it should be changed

Ma grille fonctionne bien mais il n'y a qu'un problème de rotation.

pubic void OnButtonClicked(object sender, EventArgs e)
{
   var SenderButton = (Button)sender;
   var row = Grid.GetRow(SenderButton); // Here i get row = 0 but dont know how to find other controls on same row.

   Image upimage = SenderButton.Parent.FindByName<Image>("imageExpand");  // imageExpand is my image name in grid.
   upimage.Source = "upimage.png";
}

Ici upimage es null .

Merci beaucoup.

1voto

Stephane Delcroix Points 5189

Je ne réponds qu'à votre première question.

vous avez raison, vous pouvez obtenir la valeur de la propriété attachée bindable Grid.Row en utilisant public static int GetRow(BindableObject bindable) . Il est maintenant assez facile de filtrer les enfants de la grille.

var button = (Button)sender;
var row = Grid.GetRow(button);
var grid = button.Parent as Grid;
//assuming the image is in column 1
var image = grid.Children.Where(c => Grid.GetRow(c) == row && Grid.GetColumn(c)==1);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X