2013-10-17 40 views
0

我在使用大約30000條記錄的WPF中的ListView時遇到了很差的性能。據我所知,虛擬化應該被打開,因爲這是默認的(我甚至在XAML中明確地打開了它)。WPF ListView性能很差,數據量大

表現不佳體現在這樣:

  • 很慢(一兩分鐘)做初始綁定
  • (超過一分鐘)滾動
  • 很慢(又很慢,一分鐘以上),當你選擇一行。

我希望有人會看看XAML,讓我有一些想法。

<ListView Name="grdComms" Grid.Row="0" Grid.Column="0" SelectedItem="{Binding SelectedHeader}" 
      VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" 
      ScrollViewer.IsDeferredScrollingEnabled="True"> 
     <ListView.View> 
      <GridView > 
        <GridViewColumn Header="Account Name" DisplayMemberBinding="{Binding Path=AccountName}" Width="150" /> 
        <GridViewColumn Header="Account Number" DisplayMemberBinding="{Binding Path=AccountNumber}" Width="120" /> 
        <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}" Width="80" /> 
        <GridViewColumn Header="Delivery" DisplayMemberBinding="{Binding Path=Delivery}" Width="80" /> 
        <GridViewColumn Header="Count" DisplayMemberBinding="{Binding Path=RequestCount}" Width="80" /> 
        <GridViewColumn Width="80" Header="DeDupe"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <StackPanel Width="80"> 
            <CheckBox HorizontalAlignment="Center" IsChecked="{Binding Path=SelectedForProcessing, Mode=TwoWay}"/> 
           </StackPanel> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
      </GridView> 
     </ListView.View> 
</ListView> 

注意:ItemsSource在代碼中設置爲ObservableCollection。這是一個非常簡單的屬性(幾個字符串,一個布爾)的集合,這是一個ViewModel到模型上,它是(再次)的字符串和布爾值。

我在閱讀人們使用大型記錄集沒有問題的地方,但我嘗試過的各種東西似乎並不奏效。

需要更多信息,請讓我知道。

+0

顯示爲Grid.Row = 「0」 – Paparazzi

回答

3

請不理我。只要將ListView的MaxHeight設置爲比需要的大,該問題就完全消失了。我會盲目發誓我試過這個,顯然不是。

待着,沒有什麼可看這裏......

灰色

+0

許多感謝的定義!我在stackpanel上的listview吃了400 ram。 – Julius