2010-03-15 3 views
2

J'ai une application de test très simple où j'ai deux objets, chacun avec une petite collection d'objets. lorsque je sélectionne un objet, j'affiche sa collection dans un DataGrid WPFToolkit.Pourquoi WPFToolkit DataGrid est-il si lent lors de la liaison?

Le problème est qu'il y a un retard notable, de sorte que si vous appuyez sur les touches haut/bas pour basculer la sélection entre les objets, vous pouvez voir qu'elle ne peut pas suivre.

Pourquoi les performances sont-elles si mauvaises?

<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> 

Le DataContext est peuplé de certaines classes d'épreuve remplis avec 50 éléments de données de test aléatoires.

+1

double possible http://stackoverflow.com/questions/1069025/wpf-toolkit-datagrid-performance http://stackoverflow.com/questions/1704512/wpf-toolkit-datagrid-scrolling-performance-problems -Pourquoi – jonny

Répondre

1

Changer l'attribut AutoGenerateColumns="True"-AutoGenerateColumns="False" et définir vos colonnes pour la grille de données:

<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> 

C'est ce qui fixe les problèmes de performance pour moi.

Questions connexes