Загрузка данных в таблицу DataGrid (WPF) в режиме реального времени

Используя Entity Framework, получаю данные с БД (ленивая загрузка) и гружу их в DataGrid. Примерный код:

DevicesDBEntities dBEntities = new DevicesDBEntities();  // Сущности БД
IQueryable<Device> deviceList = from d in dBEntities.Devices
                               where .....
                               select d;         // (10 мс)
dgDeviceTable.ItemsSource = deviceList.ToList(); // Загрузка в таблицу (2500 мс)
dgDeviceTable.Items.Refresh();                   // Обновление данных в таблице

в xaml файле данные биндятся следующей строкой:

<DataGrid Style="{StaticResource DataGridStyle}" x:Name="dgDeviceTable" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True" EnableColumnVirtualization="True" EnableRowVirtualization="True" AutoGenerateColumns="False" CanUserAddRows="False" MouseDoubleClick="DgDeviceTable_MouseDoubleClick" Margin="0,0,0,100" SelectionChanged="DgDeviceTable_SelectionChanged" BorderBrush="#FFA0694F">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding Act.ActNumber, Mode=OneWay}" Header="Акт" Width="40"/>
                            <DataGridTextColumn Binding="{Binding DeviceType.DeviceTypeName, Mode=OneWay}" Header="Тип" Width="100"/>
                            <DataGridTextColumn Binding="{Binding DeviceNumber, Mode=OneWay}" Header="Номер" Width="100"/>
                            ...
                        </DataGrid.Columns>
                    </DataGrid>

В таблице 16000 строк. Момент сортировки занимает примерно 10 мс, загрузка данных - 2500 мс, прорисовка таблицы с данными ~ 3000 мс. Подскажите, как можно уменьшить (оптимизировать) время загрузки данных и прорисовки таблицы? Можно ли как-то синхронизировать загрузку данных с отображением их в таблице ui, чтобы данные уже появлялись в таблице синхронно в момент их загрузки, начиная с первого элемента?


Ответы (0 шт):