Задержка при сортировке сетки данных

#c# #wpf #performance #sorting #datagrid

#c# #wpf #Производительность #сортировка #сетка данных

Вопрос:

У меня есть сетка данных WPF с 5 столбцами и 60 строками. Когда я сортирую строки, нажимая на заголовок столбца, возникает небольшая задержка. Если я использую winform datagrid для сортировки одних и тех же элементов, это намного быстрее.

Вот мой код привязки и мое определение XAML:

         public System.Data.DataTable Users{ get; set; }
    public UsersView(IUserRepository userRepository)
    {
        Repository = userRepository;
        InitializeComponent();
        Users = Repository.GetAll();
         usersDataGrid.DataContext = Users;
    }


<UserControl x:Class="FundTrading.UsersView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:FundTrading.Views"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300" Height="Auto" Width="Auto">

    <DataGrid  IsReadOnly="true" SelectionMode="Single"   AutoGenerateColumns="False" x:Name="usersDataGrid" ItemsSource="{Binding}" HorizontalGridLinesBrush="Lavender" VerticalGridLinesBrush="Lavender" RowBackground="LightYellow" >

        <DataGrid.Columns>
            <DataGridTextColumn Header="Id"  Binding="{Binding UserId}" Width="100" />
        <DataGridTextColumn Header="Login Id" Binding="{Binding LoginName}" Width="100" />
        <DataGridTextColumn Header="Name" Binding="{Binding Description}" Width="300" />
        <DataGridTextColumn Header="Active" Binding="{Binding Active}"  Width="100" />
        <DataGridTextColumn Header="Role"  Binding="{Binding RoleName}" Width="300" />
    </DataGrid.Columns>


</DataGrid>
  

Действительно ли WPF медленнее, чем Winform, или я что-то упускаю?

Большое спасибо

Комментарии:

1. Я бы рекомендовал вам запустить ваш проект в режиме отладки и убедиться, что окно вывода не содержит ошибок привязки при нажатии на заголовок столбца.

2. Он уже работает в режиме отладки, и при нажатии на заголовки столбцов ошибка не появляется.

3. Хорошо, тогда следующим шагом будет изменение типа пользователей на что-то вроде List<User> (или что-то еще, хранящееся в этом System.Data.DataTable). Если это устраняет задержку, то проблема заключается в том, как DataGrid собирает данные из DataTable