2010-04-05 7 views
0

Je voulais créer une fonction qui remplit une grille dans WPF avec des images. Alors je l'ai fait:ajouter des éléments à WPF Grid

private void setCellImage(Grid g, Image img, int column, int row) 
{ 

    Grid.SetColumn(img, column); 
    Grid.SetRow(img, row); 

    if (!g.Children.Contains(img)) 
     g.Children.Add(img); 

    g.UpdateLayout(); 
} 

et utilisait en appelant de cette façon:

for (int i = 0; i < 15; i++) 
    for(int j=0; j<15; j++) 
     setCellImage(gameMap,background, i, j); 

Mais il ne fonctionnait pas. il n'a rempli une grille que dans la cellule 14,14 laissant toutes les autres cellules vides.

Je pensais que ce peut être mon erreur que je devrais utiliser un autre cas de l'image, mais il n'a pas été que:

private void setCellImage(Grid g, Image img, int column, int row) 
{ 
    Image _img = new Image(); 
    _img = img; 

    Grid.SetColumn(_img, column); 
    Grid.SetRow(_img, row); 

    if (!g.Children.Contains(_img)) 
     g.Children.Add(_img); 

    g.UpdateLayout(); 
} 

Cette chose ne fonctionne toujours pas.

+1

Juste une pensée, même dans le code au-dessous de la nouvelle instance de l'image n'a pas été utilisée. Dans la deuxième ligne "_img = img;", après que cette instruction a été exécutée, _img contiendra la référence de l'objet référencé par la référence img. –

Répondre

2

Où la valeur de la variable d'arrière-plan est-elle définie? Si cela ne va pas changer dans votre boucle alors vous déplacez juste la même image ici et là

+0

Vous aviez tous les deux raison. J'ai fait des modifications et ça fonctionne maintenant très bien. Je vous remercie! – Konrad