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");
}
}
}
}