2011-10-26 18 views
1

私はループしてコントロールを作成するオブジェクトのリストを持っています。次に、これらの各コントロールをリストボックス項目の内容に入れ、リストボックスに追加します。Silverlight ListBoxItemパフォーマンスが悪い

私はパフォーマンスが非常に悪くなっているようです。私のコードのiveコメントされたビットとそれはコンテンツがコントロールのパフォーマンスで満たされている場合は、ウィンドウ外に出るようです。これらの80個のリストボックスを作成するのに4分かかっているようです。

コードサンプル:

foreach (var service in e.Result) 
      { 
       ListBoxItem lbi = new ListBoxItem(); 
       lbi.Tag = service.ServiceId; 

       SmallServicePanel ssp = new SmallServicePanel(); 
       ssp.DisplayText = service.DisplayText; 
       ssp.ServiceTemplateId = service.ServiceTypeId; 
       ssp.ServiceId = service.ServiceId; 
       ssp.HexColor = service.HexColor; 

       lbi.Content = ssp; 
       MyListBoxControl.Items.Add(lbi); 
      } 
+0

80(!)リストボックスは1つのダイアログにありますか?どのような素敵な小さなダイアログ;-) – Fischermaen

+0

残念なことにクライアントが望むことは、そのフィルタリングに使用されていますが、彼らは "すべて"オプションが欲しいです。 –

+0

私もこの問題を経験していますが、UI全体がフリーズしてリストボックスにユーザコントロールがロードされています – Rumplin

答えて

2

(多くのコントロールのために遅いです)反復的にコントロールを作成します(SmallServicePanelなど)をお使いの表示オブジェクトを表示するには、コレクションとのDataTemplateへの結合を使用するのではなく。

これを実行すると、ListBoxの仮想化機能が使用されます(または仮想化を提供する別のコントロールを選択します)。つまり、存在する実際のコントロールの数は、表示されるものよりはるかに大きくなく、パフォーマンスは飛躍を遂げることになります。

あなたの行き先をお知らせください。

+0

ありがとうございます。 –

関連する問題