Я пробовал использовать как настроенную DataGrid, так и стандартную в WPF. Я попытался заполнить их вручную, а также через привязки. В обоих случаях они медленные.
У меня есть сценарий, где пользователь нажимает кнопку, и появляется DataGrid с соответствующими данными. В настоящее время я нахожусь в режиме проверки концепции и просто использую примеры данных. У меня есть DataSet с таблицей, в которой 10 строк.
Если я не прикрепляю данные к DataGrid, когда нажимаю кнопку, пустой DataGrid отображается практически мгновенно, пользователь не может воспринять задержку. Как только я добавляю 10 строк данных, для 6 столбцов задержка составляет около 2 секунд, что очень заметно для пользователя.
Я даже пытался заполнить пустые данные, просто чтобы появилась пустая сетка, и она одинаково медленная.
for (int i = 0; i < 10; i++)
_dataGrid.Items.Add("");
Я установил таймер для подсчета отметок от момента нажатия кнопки до момента, когда весь код выполняется для рисования DataGrid, и он составляет около 20 миллисекунд, поэтому код выполняется очень быстро, но на экране, где большое отставание есть. Я попробовал GridView, и он очень быстро рендерится на экране.
Я слышал различные сообщения о медленном рисовании DataGrid со сложными сценариями и использовании тысяч строк, но это так просто, как получается, 6 столбцов на 10 строк заполнены пустыми данными.
Является ли GridView одинаково жизнеспособным вариантом для DataGrid для чтения только для чтения?
Обновление
Вот создание моих столбцов.
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];
Не уверен, что я могу сделать по-другому.