複数の列に項目を表示するために LongListSelector を取得するにはどうすればよいですか?
画面を垂直方向に埋めるには 3 つの「アイテム」で十分ですが、水平方向には別の列を配置するのに十分なスペースがあるとします。それ以外の:
item1
item2
item3
... (scroll down)
item4
item5
item6
... (scroll down)
item7
見たい:
item1 item5
item2 item6
item3 item7
...(scroll down)
item4
どこかに WrapPanel を導入する必要があると思いますが、方法がわかりませんか? XAML ソリューションを探しています。
項目グループを使用していますが、列に関して特別なグループ化は必要ありません。つまり、グループ ヘッダーはアイテムとインラインで表示できます。列にまたがる必要はありません。特定のグループが同じ列または同じ画面に属している必要はありません。
私たちは WP7 に対してビルドしているので、LayoutMode がこれを簡単に解決する完全な機能を備えた WP8 バージョンではなく、WP7 ツールキットのバージョンの LongListSelector を使用しています。
更新: Chris W の回答に従って、「独自の」WP7 ツールキットをダウンロードして構築し、Generic.xaml を次のように変更しました。
<primitives:TemplatedListBox.ItemsPanel>
<ItemsPanelTemplate>
<controls:WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</primitives:TemplatedListBox.ItemsPanel>
ただし、2 列目のスペースを確保するために datatemplate アイテムの幅を制限しているにもかかわらず、アイテムは折り返されていません。
この質問によると、目的の動作を得るには、WrapPanel の高さを明示的に設定する必要があるようです。これが機能するかどうかを確認するために、WrapPanel の Height と MaxHeight をハードコーディングしようとしましたが (実行可能な永続的なソリューションではありません)、どちらも機能しませんでした!
LongListSelector の「グループにジャンプ」機能は必要ないので (アイテムのグループ化を行うためだけに選択しました)、単純にListBox を ValueConverter と共に使用してグループ化を有効にします。