2

私は非常に単純なテスト アプリケーションを持っています。ここには 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 に答える