如何加速WPF DataGrid?

时间:2010-07-06 08:35:50

标签: c# wpf data-binding

后台:我有执行的任意查询,然后我获取数据 - 记录数组=对象数组。我想使用DataGrid查看它们。

问题:感觉应用程序没有足够的响应能力。从查询到查询的切换很慢,切换大约需要1-2秒,而且只能显示约20条记录!我想立即进行切换,点击“下一个查询”,您就可以立即获得结果。

代码:

        // defining colums for a grid
        grid.Columns.Clear();

        int i = 0;
        foreach (var db_col in query.Names) // names of the colums
        {
            var col = new DataGridTextColumn();
            col.Header = db_col;
            col.Binding = new Binding(String.Format("Data[{0}]",i));
            grid.Columns.Add(col);
            ++i;
        }

        // adding rows to grid -- the culprit
        grid.Items.Clear();

        foreach (var db_row in query.Rows)
        {
            var row = new DataGridRow();
            row.Item = db_row;
            grid.Items.Add(row);
        }

我无法看到其他方式 - 我遍历行并逐个添加它们。行已经在内存中,此时没有数据库通信。我怎么知道这个(添加行)是减速的原因?非常简单,我对此进行评论,应用程序变得很快。

我的盒子:Windows 7旗舰版32位,CPU Intel Core2Duo 2.66GHz,2GB RAM。

1 个答案:

答案 0 :(得分:1)

您是否尝试过调用BeginInit和EndInit以在添加每个项目后停止更新网格?

grid.BeginInit();
grid.Items.Clear();

foreach (var db_row in query.Rows)
{
    var row = new DataGridRow();
    row.Item = db_row;
    grid.Items.Add(row);
}

grid.EndInit();