2009-10-09 73 views
4

我有一個WPF窗口,其中顯示一個ListBox。我已更改ListBox的項目模板,以便列表框顯示可以選擇的矩形項目。更改項目的顯示方式WPF列表框

現在我想修改ListBoxItemsPanelTemplate,以便項目顯示在網格中而不是垂直或水平列表中。具體而言,我希望第一件物品在ListBox的右上角,然後是第二件物品,然後是第二件物品,然後是第三件物品,直到下一件物品的高度使物品欄的高度高於ListBox本身的高度。此時,它應該直接在第一個項目右側添加第二列。如果組合的所有列的總寬度大於ListBox的寬度,則應出現水平滾動條。

是否有辦法通過修改ItemsPanelTemplate來獲得該效果?還是我需要擴展ListBox類本身?無論哪種情況,我會如何解決這個問題?

感謝您的幫助!

回答

4

我沒有測試過這一點,但我懷疑,你可以通過交換由ListBox使用的默認面板的WrapPanel得到想要的效果:

<ListBox> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 
+0

感謝您的幫助!這基本上可以解決它,但上面的代碼仍然只是創建一個長的垂直列表。讓我們按照上面描述的方式創建一個網格的訣竅是將此屬性添加到ListBox標記: ScrollViewer.VerticalScrollBarVisibility = 「禁用」 – Evan 2009-10-09 21:03:00