Сортировка и прокрутка очень медленно в DataGrid при использовании LINQ - PullRequest
0 голосов
/ 28 марта 2019

Сортировка и прокрутка очень медленные в DataGrid при использовании LINQ.Он отлично работает при связывании его с результатами хранимой процедуры.

Есть только 200 записей.Это почему?

Я пробовал DataGrid со следующими свойствами, но не повезло:

EnableRowVirtualization="True"
EnableColumnVirtualization="True"
ScrollViewer.CanContentScroll="True" 

Вот простой код LINQ, который возвращает список клиентов с объектом customer:

public List<Customer> GetLinkedCustomer()
{
     using (MYModel context = new MYModel())
     {
         return context.Customers.Where(x => x.CustLong1 != null).OrderBy(customer => customer.LastName).ToList();
     }
}

XAML код:

<Grid Margin="5,5,5,5" Height="Auto" Width="700">
        <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />

       </Grid.RowDefinitions>
    <DataGrid Grid.Row="0" Name="dgLinkedCustomers"  Height="250" CanUserAddRows="False" AutoGenerateColumns="False" CanUserSortColumns="True" IsReadOnly ="True" SelectionMode="Single">
        <DataGrid.Columns>
            <DataGridTextColumn IsReadOnly="True"  Binding="{Binding FirstName , IsAsync=True}" Header="{x:Static res:Strings.Common_FirstName}" Width="150"/>
            <DataGridTextColumn IsReadOnly="True"  Binding="{Binding LastName , IsAsync=True}" Header="{x:Static res:Strings.Common_LastName}" Width="175"/>
            <DataGridTextColumn IsReadOnly="True"  Binding="{Binding ShopName, IsAsync=True}" Header="{x:Static res:Strings.ShopName}" Width="215"/>
            <DataGridTextColumn IsReadOnly="True"  Binding="{Binding CustLong1 , IsAsync=True}" Header="{x:Static res:Strings.AccountNumber}" Width="*"/>
        </DataGrid.Columns>
    </DataGrid>
    <StackPanel Grid.Row="1" Orientation="Vertical" Margin="0,0,0,5" HorizontalAlignment="Right">

        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
            <Button Name="Close" Margin="0,0,10,0" Width="100">
                <AccessText Text="{x:Static res:Strings.BtnText_Close}" />
            </Button>
            <Button Name="Unlink" Margin="0,0,10,0" Width="100" Click="Unlink_OnClick">
                <AccessText>Unlink</AccessText>
            </Button>
        </StackPanel>

    </StackPanel>
</Grid>
...