2011-06-19 21 views
0

うまくいけば、誰かが私を助けることができるか、少なくとも私を少し啓発してください。マンゴー・ベータ・ツールのリリース後、私は新しいWP7プロファイラで多くの役割を果たしました。WP7 ListBoxItem ContentPresenter測定時間

ちょっと複雑なアイテムを持つすべての単一のリストボックスは、永遠に描画されています。たとえば、Border-> Grid-> 6xTextBoxes(それぞれ単一のシンボルを表示する)で構成される項目を持つリストボックスは、リストボックス項目ごとに303ミリ秒かかる。そのうちの288msはListBoxItemのContentPresenter Measure Time(excl。)に費やされます。

私が知っているのは、費用のかかる操作ですが、まだこれは狂気を超えています。いかなる考えも認められるだろう。

答えて

0
  1. あなたのデータは完全に非同期アクションでロードされ、あなただけのリストボックスに項目を追加することが

  2. は、あなたのテンプレートに代わりのStackPanelのグリッドを使用していることを確認してくださいUIスレッドで実行されていることを確認し

次の記事にも非常に便利です:

http://blogs.msdn.com/b/slmperf/archive/2010/10/06/silverlight-for-windows-phone-7-listbox-scroll-performance.aspx

+0

ありがとうございますが、データはローカルで計算されており、問題が発生するのはわずか数msで済みます。私は実際に法案問題に関するいくつかのアイデアを聞きたいと思います – Miro

+0

私は含まれているリンクの推奨事項に従っていますか?私は一般的にそれらのものに従って、まだ私の2つの提出されたアプリで大きな問題を抱えていません。 –

+0

さて、ここ数ヶ月間、私は多くの提案を見てきましたが、成功していませんでした。サイズは固定されており、データはダウンロードされていませんし、いくつかの項目(約40のリストボックス項目)があります。依然として測定するフェイズは理にかなっています。 – Miro

1

MeasureOverrideが最も時間のかかる操作であることを確認することしかできません。 (そして、それを見つけるためにプロファイラは必要ありません)なぜ私はそれがずっと長くかかるのか推測できます。

まず、MeasureOverrideはListBoxItemのビジュアルツリーを再帰的に移動します。このコールチェーンの終わりには、おそらく実際のサイズを返すネイティブコードへの呼び出しがあります。

したがって、単純なアイテム構造を維持することが最も重要です。

あなたの構造は複雑すぎるようです。 TextBoxテンプレートを見ると、その構造がGrid> Border> ContentPresenterであることがわかります。私はあなたのコードを知らないので、ContentPresenterの背後にあるものは判断できません。なぜTextBlockを使用しないのでしょうか(可能な場合) - これはずっと効率的です。

実験として、私はMyListBoxItem.MeasureOverrideを実装し、ベース実装を呼び出さずに固定サイズを返そうとします。私はそれが動作するかどうかは分かりませんが、それは驚くべき結果をもたらす可能性があります。

独自のリスト項目を実装する際に調査してもよい2番目のことは、MeasureOverride呼び出しの頻度です。 (または単にプロファイラの出力を見てください)。コールの数が多すぎると、レイアウトが必要以上にループすることがあります。おそらく、解決するためにいくつかのステップが必要ないくつかの相反するサイジング要件があります。

あなたは40項目を挙げています。それは何の役にも立たないはずです。 ListBoxは3つの画面のListBoxItemを構築し、残りの項目は必要に応じて構築(ほとんどの場合再利用)されます。項目数を増やして測定時間が増える場合は、データの実装で問題がないかどうかを調べます。

+0

返事をありがとう。これらの40項目は実際には1つの画面に表示されます(ラップパネルがあります)。 BTW私は混乱のために申し訳ありません、TextBlocksを使用しています。サイズはうまくあり、何度も呼び出されていないので、sth elseが必要です。私は手動で効果のないすべての可能なサイズを設定しようとしました。捕まえてもう少し再生し、MeasureOverrideを実装して改善できるかどうかを試してみるかもしれません。提案に感謝します。 – Miro

関連する問題