2013-10-17 1 views
0

약 30000 개의 레코드를 사용하여 WPF의 ListView에서 성능이 매우 저하되고 있습니다. 내가 아는 한 멀리 가상화가 켜져 있어야합니다 (심지어 XAML에서 명시 적으로 설정 했음).WPF ListView에서 대용량 데이터의 성능이 매우 좋음

가난한 성능이 방법으로 명단 :

  • 아주 천천히 (몇 분)이 초기 바인딩을 할
  • 다시 (
  • 가 매우 느린 스크롤 (분 이상) 아주 천천히, 당신이 행을 선택할 때 1 분 넘게).

나는 누군가가 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으로 설정됩니다. 이것은 예쁜 일반 속성 (문자열 쌍, bool)의 모음으로 Model (다시) 문자열 및 bool 인 ViewModel입니다.

사람들이 큰 레코드 세트를 문제없이 사용하고있는 곳을 읽었지만 시도한 여러 가지 사항이 작동하지 않는 것 같습니다.

더 많은 정보가 필요하시면 알려주세요.

+0

을 위해 Grid.Row = "0" – Paparazzi

답변

3

나를 무시하십시오. ListView의 MaxHeight를 필요 이상으로 설정하면 문제가 완전히 사라집니다. 나는 장님이라고 맹세 하겠지만 나는 이것을 시도했다.

이동 함께, ... 여기 볼 것도 없다

회색

+0

많은 감사에 대한 정의를 보여줘! stackpanel에 내 listview 전에 400 램을 먹는다. – Julius

관련 문제