2015-07-25 3 views
1

J'ai une quantité inconnue d'images qui s'ajoutent à un contrôle Grid avec du code et un type im de perdu dans la logique car les images sont insérées dans le mauvais ordre. Jetez un coup d'oeil (Modulus comme celui-ci en raison de tests):Problèmes de logique dans le script C# où les images sont chargées dans un type de grille

grid.Height = this.Height; 
    grid.Width = this.Width; 
    grid.ShowGridLines = true; 
    for (int i = 0; i < 50; i++) 
    { 
     RowDefinition rowDef = new RowDefinition(); 
     rowDef.Height = new GridLength(50); 
     grid.RowDefinitions.Add(rowDef); 
     ColumnDefinition colDef = new ColumnDefinition(); 
     colDef.Width = new GridLength(50); 
     grid.ColumnDefinitions.Add(colDef); 
    } 
    int x = 1; 
    int y = 1; 
    for (int i = 0; i < 50; i++) 
    { 
     y++; 
     if (i % 10 == 0) 
     { 
      x++; 
      y = 1; 
     } 
     Image img = new Image() { Source = new BitmapImage(new Uri("Images/positive.png",UriKind.Relative)), Width = 50, Height = 50, Margin = new Thickness(2,2,2,2) }; 
     grid.Children.Add(img); 
     Grid.SetRow(img, x); 
     Grid.SetColumn(img, y); 
    } 

Résultat: Grid of images not starting in the first row at the first coloumn

Comme vous pouvez voir les images commencent sur une nouvelle ligne chaque image 10 comme le module dit, mais ils ne le font pas Commencez au premier rang de la première colonnne.

Ce que je veux atteindre est le suivant: Image of a gallery in a grid view manner

Qu'est-ce que je fais mal? Merci!

Répondre

1

Définir les valeurs initiales comme suit devrait résoudre votre problème.

int x = -1; 
int y = -1; 

Et à l'intérieur si vous devriez essayer

if (i % 10 == 0) 
     { 
      x++; 
      y = 0; 
     } 
+0

Parfait! Merci, ça fait sence maintenant! –

1

Sur votre première itération dans la boucle, i est 0.

(0 % 10 == 0) // true 

Alors x est incrémentée de 1 immédiatement.

Définissez un point d'arrêt au début de votre boucle for et suivez l'exécution. Dans ce cas, vous l'auriez vu immédiatement.