2010-11-17 7 views
0

J'ai deux exemples simples pour illustrer mon problème. Lorsque j'exécute le scénario 1, je suis capable de naviguer dans la liste comme d'habitude, en utilisant le mode de sélection étendu pour choisir les éléments. Lorsque j'exécute le scénario 2, je trouve que la navigation dans ma liste est lente et que la sélection des éléments ne fonctionne pas correctement. C'est difficile à expliquer, cependant, le claquement est que cliquer ne sélectionne pas l'élément sous le curseur la plupart du temps.Performances de la vue liste WPF - éléments statiques et éléments de la base de données

Des idées?

définissent 1.Statically une vue de liste avec 1000 articles

<Window x:Class="WpfApplication1.StaticListView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="StaticListView" Height="300" Width="300"> 
    <Grid> 
     <ListView Name="listView" SelectionMode="Extended">    
      <ListViewItem Content="bla" />    
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
      <ListViewItem Content="bla" /> 
.... 

2. Définition d'une vue sur la liste qui est DataBound à une liste de 1000 articles

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for TestManyItemsInListView.xaml 
    /// </summary> 
    public partial class BoundListView : Window 
    { 
     public BoundListView() 
     { 
      InitializeComponent(); 
      List<string> items = new List<string>(); 
      AddItems(items); 
      listView.ItemsSource = items; 
     } 

     public void AddItems(List<string> items) 
     { 
      while (items.Count < 1000) 
      { 
       items.Add("bla"); 
      } 
     } 
    } 
} 

Répondre

0

Connaissez-vous la virtualisation dans WPF ? WPF charge et décharge dynamiquement des éléments pour améliorer les performances avec des listes volumineuses. Le document suivant peut vous être utile:

Improving Scrolling Performance in WPF

Questions connexes