Я попытался использовать как настроенный DataGrid, так и запасной в WPF. Я попытался заселить их вручную, а также с помощью привязок. В обоих случаях они медленны.
У меня есть scenerio, где пользователь нажимает кнопку и появляется DataGrid с соответствующими данными. В настоящее время я подтверждаю концептуальный режим и просто использую образцы данных. У меня есть DataSet с таблицей, в которой есть 10 строк.
Если я не прикрепляю какие-либо данные к DataGrid, когда я нажимаю кнопку, пустой DataGrid отображается в значительной степени мгновенно, пользователь не может воспринимать задержку. Как только я добавлю 10 строк данных, для 6 столбцов задержка составляет около 2 секунд, что очень заметно для пользователя.
Я даже попробовал заполнить пустые данные, просто чтобы получить пустую сетку, и она будет столь же медленной.
for (int i = 0; i < 10; i++)
_dataGrid.Items.Add("");
Я помещаю таймер для подсчета тиков, когда нажата кнопка, когда весь код выполняется для рисования DataGrid, и это около 20 миллисекунд, поэтому код выполняется очень быстро, но на экране есть большой лаг. Я попробовал GridView, и он очень быстро отображается на экране.
Я слышал различные отчеты о медленном графике DataGrid со сложными сценариями и использовании 1000 строк, но это так же просто, как и он, 6 столбцов на 10 строк, заполненных пустыми данными.
Для отображения только для чтения GridView является одинаково жизнеспособным вариантом для DataGrid?
Update
Вот создание моих столбцов.
DataGridTextColumn column = new DataGridTextColumn();
column.ColumnWidthChanged += new ColumnWidthChangedEventHandler(column_ColumnWidthChanged);
column.Header = entity.GetPropertyValue("ColumnLabel");
column.Binding = new Binding(entity.GetPropertyValue("Tag"));
column.Width = new DataGridLength(entity.GetPropertyDouble("DisplaySize"));
_dataGrid.Columns.Add(column);
Вот как я связываю DataSet с 10 строками в нем.
_dataGrid.ItemsSource = ds.Tables[0].DefaultView;
_dataGrid.DataContext = ds.Tables[0];
Не уверен, что я могу сделать по-другому.