【问题标题】:how to easily handle a datagrid in wpf如何在 wpf 中轻松处理数据网格
【发布时间】:2012-08-03 09:59:53
【问题描述】:

我用windows窗体做了一个数独游戏,比如datagrid很容易处理

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

                        }
                    }
                }
            }

有什么帮助吗?

【问题讨论】:

    标签: c# wpfdatagrid


    【解决方案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]

    【讨论】:

    • 感谢您的帮助! anw 在 xaml 部分中,Binding Path=Cells[0,0] 不起作用。它必须是 Binding Path=Cells[0][0]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多