Почему WPFToolkit DataGrid такой медленный при связывании? - PullRequest
2 голосов
/ 15 марта 2010

У меня очень простое тестовое приложение, в котором у меня есть два объекта, каждый с небольшим набором предметов. когда я выбираю объект, я отображаю его коллекцию в WPFToolkit DataGrid.

Проблема в том, что существует заметная задержка, например, если вы нажимаете клавиши вверх / вниз для переключения между объектами, вы можете видеть, что они не успевают.

Почему производительность такая плохая?

<Window x:Class="SlowGridBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Controls="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
    Title="MainWindow" Height="350" Width="525">
<StackPanel>
    <ListBox ItemsSource="{Binding Shops}" DisplayMemberPath="Name" IsSynchronizedWithCurrentItem="True"/>
    <Controls:DataGrid ItemsSource="{Binding Shops/Vegetables}" AutoGenerateColumns="True"/>
</StackPanel>

DataContext заполнен некоторыми тестовыми классами, заполненными 50 элементами случайных тестовых данных.

1 Ответ

1 голос
/ 08 февраля 2012

Измените атрибут AutoGenerateColumns="True" на AutoGenerateColumns="False" и определите столбцы для сетки данных:

<my:DataGrid AutoGenerateColumns="False" ... >
    <my:DataGrid.Columns>
        <my:DataGridTextColumn Header="Col1" Width="*" Binding="{Binding Path=Col1}" />
        <my:DataGridTextColumn Header="Col2" Width="*" Binding="{Binding Path=Col2}" />
        .
        .
        .
    </my:DataGrid.Columns>
</my:DataGrid>

Это то, что исправило проблемы с производительностью для меня.

...