c# 脚本中的逻辑问题,其中图像以网格类型外观加载

Problems with logic in c# script where images are loaded in a grid type look

我有未知数量的图像,我正在使用代码添加到网格控件中,并且我有点迷失在逻辑中,因为图像以错误的顺序插入。看看(模数是这样的,因为测试):

    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);
    }

结果:

如您所见,图像按照模数表示每 10 张图像从新行开始,但它们不是从第一列的第一行开始。

我想要实现的是:

我做错了什么?谢谢!

在循环的第一次迭代中,i 为 0。

(0 % 10 == 0) // true

所以 x 立即加 1。

for 循环的开头设置一个断点并跟随执行。在这种情况下,您会立即看到它。

如下设置初始值应该可以解决您的问题。

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

如果你应该试试里面的话

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