如何在wpf中轻松处理数据网格

时间:2012-08-03 09:59:54

标签: c# wpfdatagrid

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

dataGridView1[2,3]=5;

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

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)....

                        }
                    }
                }
            }

任何帮助?

1 个答案:

答案 0 :(得分: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]

即可