2010-11-17 65 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"); 
      } 
     } 
    } 
} 

回答

相關問題