2011-04-29 8 views
1

私は銀色のツールキットtreeviewを使ってデータセットを表示しています。これには1000個の要素があり、いくつかの子要素には500個もの子要素があります。データをロードしてツリービューで表示するには、約1分かかります。ツリービューに仮想化はありますか?もしそうなら、サンプルやコードスニペットを私に指摘してもらえますか?次のXAMLシルバーライトでtreeviewを仮想化する

ある
<controls:TreeView Grid.Column="0" VerticalAlignment="Stretch" 
           ItemsSource="{Binding People}" > 
     <controls:TreeView.ItemTemplate> 
      <common:HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
       <StackPanel> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="10*"/> 
          <ColumnDefinition Width="90*"/>     
         </Grid.ColumnDefinitions> 
         <CheckBox IsChecked="{Binding TwoState}" Grid.Column="0"/> 
         <TextBlock Grid.Column="1" Text="{Binding Name}"/> 
        </Grid> 
       </StackPanel> 
      </common:HierarchicalDataTemplate> 
     </controls:TreeView.ItemTemplate> 
    </controls:TreeView> 

は、私はあなたが問題にビー・コスタの記事を見てみる必要があります

public class Person:INotifyPropertyChanged 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public bool TwoState { get; set; } 
    public ObservableCollection<Person> Children { get; set; } 

    public Person() 
    { 
     TwoState = false; 
     Children = new ObservableCollection<Person>(); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged(string info) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 
} 

答えて

1

を使用する人のクラスです。 彼女のブログをチェックしてくださいhere。 3.5の時点で、Silverlightはツリービューのために仮想化をオプトインしています。パフォーマンスを向上させるものの1つは、必要に応じて子ノードをロードすることです。彼女は彼女の記事でこれをカバーしています。

基本的に、これは次のようなものです。必要なものだけをUIに読み込む必要があります。