2012-08-03 100 views
0

一个DataGrid我使用Windows窗体做了一个数独游戏,数据网格是很容易处理,例如如何轻松地处理在WPF

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

         } 
        } 
       } 
      } 

任何帮助吗?

回答

1

我不会读取dataGridView的内容。相反,我会将一个控件(如datagridview)绑定到代表Sudoku中的值的数据结构。

这将让你简单地检查数据结构(甚至添加方法,属性和事件,以它)

只是做一个网格(9x9的细胞),并在每一个小区的文本块并结合各自的文本属性细胞二维数组的元素:

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

,并设置网格的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]

+0

感谢您的帮助!在xaml节中的anw,Binding Path = Cells [0,0]将不起作用。它必须是绑定路径= Cells [0] [0] – 2012-08-04 09:39:43

+0

的确,我会编辑我的答案!谢谢。 – 2012-08-04 09:51:39