2010-11-17 81 views
0

我有两个简单的示例来演示我的问题。WPF列表视图性能 - 静态与数据绑定项目

当我运行方案1时,我可以像平常一样浏览列表视图,使用扩展选择模式选择项目。

当我运行场景2时,我发现导航列表视图很慢,并且选择项目无法正常工作。然而,很难解释,它的主要特点是,单击不会在大部分时间选择光标下的项目。

任何想法?

1.Statically定义与1000个项目

<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.Define是数据绑定到的1000个项目的列表的列表视图列表视图

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

回答