我正在使用WinRT GridView,顯示分組數據。我有一個設計要求,指定網格中每個項目組之間的20px間距。在Windows 8.1 GridView中設置組頁邊距
我注意到當我爲ItemsPanelTemplate使用ItemsWrapGrid時,我可以設置GroupPadding屬性,但沒有GroupMargin屬性。我已經嘗試用StackPanel替換ItemsWrapGrid,它允許我設置GroupStyle.Panel(我可以指定一個VariableSizedWrapGrid並設置一組邊距)。這完全滿足了我的視覺設計的要求,但不幸的是,使用StackPanel會帶來負面的性能影響,因爲這將不允許GridView使用虛擬化。
我也嘗試用ItemsStackPanel替換ItemsWrapGrid(它支持虛擬化),但是當滾動通過具有不同數量項目的組時滾動條會出現奇怪的水平滾動條行爲。 (滾動條越來越小)。
這裏是我到目前爲止的代碼片段:
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Margin="20,0,0,0"
Background="Red"
GroupPadding="0,0,80,0">
</ItemsWrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
margin屬性適用於整個電網。 GroupPadding屬性正確設置組之間的間隔,但我需要爲每個組(每個組之間有一個透明間隙)爲每個組設置背景顏色(本例中爲紅色)。
TL;博士: 我想用一個ItemsWrapGrid因爲,我可以設置一個組保證金的ItemsPanel分組數據的GridView控件。
嗨內特,感謝您的嘗試,但正如我的問題所示,我已經嘗試指定GroupStyle設置,但是這隻在GridView.ItemsPanel不是ItemsWrapGrid時才起作用。不幸的是,在使用默認ItemsWrapGrid作爲GridView ItemsPanel時,GroupStyle.ContainerStyle屬性在8.1中被棄用和實際忽略。 –
添加了說明。我爲GroupStyle的面板添加了一個保證金,該面板起作用。 –
再次感謝,但正如我所提到的,當您的GridView.ItemsPanel不是ItemsWrapGrid時,您的解決方案只能在Win 8.1中運行。有關詳細信息,請參閱http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.itemscontrol.groupstyle.aspx。 它可能正在爲你工作,但你不會使用我們需要的性能方面的ItemsWrapGrid。 –