2

我有一个非常简单的测试应用程序,其中有两个对象,每个对象都有一小部分项目。当我选择一个对象时,我在 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 项随机测试数据。

4

1 回答 1

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>

这就是为我解决性能问题的原因。

于 2012-02-08T14:06:02.167 回答