【发布时间】:2014-02-13 21:50:44
【问题描述】:
我正在使用 WinRT GridView,显示分组数据。我的设计要求是在网格中的每组项目之间指定 20px 的间隙。
我注意到当我为 ItemsPanelTemplate 使用 ItemsWrapGrid 时,我可以设置 GroupPadding 属性,但没有 GroupMargin 属性。
我尝试用 StackPanel 替换 ItemsWrapGrid,这允许我设置 GroupStyle.Panel(我可以在其中指定 VariableSizedWrapGrid 并设置组边距)。这完全符合我的视觉设计要求,但不幸的是,使用 StackPanel 会对性能产生负面影响,因为这将不允许 GridView 使用虚拟化。
我还尝试用 ItemsStackPanel(它确实支持虚拟化)替换 ItemsWrapGrid,但是当滚动具有不同数量的项目的组时,这会产生奇怪的水平滚动条行为。 (滚动条变得越来越小)。
这是我目前所拥有的代码 sn-p:
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Margin="20,0,0,0"
Background="Red"
GroupPadding="0,0,80,0">
</ItemsWrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
Margin 属性适用于整个 Grid。 GroupPadding 属性正确设置了组之间的间隙,但我需要为每个组设置背景颜色(在本例中为红色),并在每个组之间设置透明间隙。
tl;博士: 我想要一个带有分组数据的 GridView,其中 ItemsWrapGrid 作为我可以设置组边距的 ItemsPanel。
【问题讨论】:
标签: windows-store-apps winrt-xaml windows-8.1