我有一个网格视图,显示分组的数据。我得到具有以下特征显示的数据:每个组接收相同数量的水平空间,由最大的组决定。
澄清一下,我最大的数据组显示一个 3 行 x 4 列项目的数组。每列为 300 像素,为组分配 1200 像素。其他组只有一个项目。但是,系统分配 1200 像素,而不是此组的宽度为 300 像素。300 像素用于包含项目,900 像素仅用于空白空间。
任何解释为什么会发生这种情况?
我在分组方面遇到了同样的问题。我添加了一个水平方向的StackPanel作为ItemsPanel。
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
你使用的是 dataTemplateSelector?因为我在使用dataTemplateSelector时遇到了同样的问题。我所做的是使用VariableSizedWrapGrid,它允许您在Grid中具有不同的项目大小。它与分组列表配合得很好。您可以点击那些解释一切的链接:
http://blogs.u2u.be/diederik/post/2012/03/07/Databinding-to-the-VariableSizedWrapGrid-in-Windows-8-Metro.aspx
下面是一个示例示例: https://skydrive.live.com/?cid=3a5ca8204ec61147&id=3A5CA8204EC61147!35841
我遇到了同样的问题:
第一个组宽度确定所有其他组的宽度。
<GridView
x:Name="resultsGridView"
AutomationProperties.AutomationId="ResultsGridView"
AutomationProperties.Name="Search Results"
TabIndex="1"
Grid.Row="1"
Margin="0,-238,0,0"
Padding="110,240,110,46"
SelectionMode="None"
IsSwipeEnabled="false"
ItemClick="resultsGridView_ItemClick_1"
IsItemClickEnabled="True"
ItemsSource="{Binding Source={StaticResource resultsViewSource}}"
ItemTemplate="{StaticResource StandardSmallIcon300x70ItemTemplate}">
<GridView.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Height" Value="150"/>
<Setter Property="Margin" Value="0,0,38,8"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="1,0,0,6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!--<Button
AutomationProperties.Name="Group Title"
Style="{StaticResource TextPrimaryButtonStyle}" >-->
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
<!--<TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>-->
</StackPanel>
<!--</Button>Click="Header_Click"-->
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>