0

我使用 Windows 窗体制作了一个数独游戏,数据网格很容易处理,例如

dataGridView1[2,3]=5;

现在在 wpf 中不能像这样使用数据网格,我需要找到最简单的方法来测试和填充网格,例如我有如下代码:

for (i = 0; i < 9; i++)
            {
                for (j = 0; j < 8; j++)
                {
                    for (k = j + 1; k < 9; k++)
                    {
                        if (dataGridView1[i, k].Value != null)....

                        }
                    }
                }
            }

有什么帮助吗?

4

1 回答 1

1

我不会阅读 dataGridView 的内容。相反,我会将控件(例如 datagridview)绑定到表示数独中值的数据结构。

这将允许您简单地检查数据结构(甚至向其添加方法、属性和事件)

只需在每个单元格中创建一个 Grid(9x9 单元格)和一个文本块,并将每个单元格的 text 属性绑定到二维数组的元素:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        ...
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        ...
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Path=Cells[0][0]}"/>
    <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Path=Cells[1][0]}"/>
    <TextBlock Grid.Column="2" Grid.Row="0" Text="{Binding Path=Cells[2][0]}"/>
    ...
</Grid>

并在代码中设置 Grid 的 DataContext:

class Sudoku
{
    public int[,] Cells = new int[9,9];
    ...
}


private Sudoku _sudoku;

MainWindow_Loaded(...)
{
    _sudoku = new Sudoku();
    grid.DataContext= _sudoku;

}

现在您可以简单地设置和检查_sudoku.Cells[2,3]

于 2012-08-03T10:13:24.503 回答