0

I need to have a dynamic layout inside List box item.

Example of such layout would be the news feed on Facebook. To simplify, let's narrow it down to one news item type: Somebody added N photos. I already have an algorithm which takes image sizes and produces optimal layout.

  • I don't want to have 20 images with bound Width, Height, Margin, Visibility.

  • I do have to have virtualization enabled.

How can this be done on Windows phone platform?

4

1 に答える 1

0

最も簡単な方法:

リスト ボックス項目内に ItemsControl を配置します。レイアウト アルゴリズムが指示するように、ItemsControl の幅と高さを設定します。ItemsPanel をグリッドに設定します。データ テンプレートに画像を配置し、レイアウト アルゴリズムの指示に従って余白を設定します。

画像は仮想化されず、リストボックス アイテム (画像を含む ItemsControl 全体を含む) は仮想化されます。

最も正しい方法 (単一のアイテムが 2048px を超えるような多数の画像や大きな画像がある場合にのみ必要):

たとえば VirtualizingStackPanel から継承し、MeasureOverride と ArrangeOverride をオーバーライドしてカスタム レイアウトを実装し、コード内の仮想化関連の問題を修正するのに約 2 ~ 10 日を費やします。この方法ではすべてが仮想化されますが、時間は概算であり (私自身はやったことがありません)、最終的に成功することを保証することはできません。

中間の方法: レイアウト アルゴリズムを再設計して、画像を行にレイアウトします。単一の仮想化リストボックスまたは ItemsControl を使用して、項目を小さな行に分割し、各行に 1 行の画像を含めます。

于 2013-02-06T23:00:12.697 に答える