我有一个非常简单的测试应用程序,其中我有两个对象,每个对象都有一小部分项目。当我选择一个对象时,我在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项随机测试数据的测试类。
答案 0 :(得分:1)
将属性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>
这就解决了我的性能问题。