Фон: У меня есть произвольный запрос, который выполняется, а затем я извлекаю данные - массив записей = массивы объектов. Я хотел бы просмотреть их с помощью DataGrid.Как ускорить работу WPF 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);
}
Я не могу понять, что я могу другой путь - я перебирать строки и добавить их один за другим. Строки уже находятся в памяти, на данный момент связи с базой данных нет. Как это узнать (добавление строк) является причиной замедления? Совершенно просто, я прокомментирую это, и приложение становится быстрым.
My box: Windows 7 Ultimate 32-bit, процессор Intel Core2Duo 2.66GHz, 2GB RAM.
Спасибо, я сделал сейчас, но все же - отставание видно. – greenoldman