GridView没有正确地分组

时间:2012-09-18 04:45:28

标签: c# xaml windows-8 winrt-xaml

我有一个网格视图,以组的形式显示数据。我得到了具有这种特征的数据:每组接收相同数量的水平空间,由最大的组确定。

为了澄清,我最大的数据组显示了一个包含3行×4列项目的数组。每列为300像素,为该组分配1200像素。其他组只有一个项目。但是,该系统的宽度不是300像素,而是分配1200像素。包含该项目的300个像素,以及仅为空的空间的900个像素。

为什么会发生这种情况的任何解释?

3 个答案:

答案 0 :(得分:4)

我在分组方面遇到了同样的问题。我添加了一个水平方向的StackPanel作为ItemsPanel。

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

答案 1 :(得分:0)

您使用的是dataTemplateSelector吗?因为我在使用dataTemplateSelector时遇到了同样的问题。我所做的是使用VariableSizedWrapGrid,它允许您在Grid中具有不同的项目大小。它适用于GroupedList。您可以按照说明所有内容的链接进行操作:

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

答案 2 :(得分:0)

我遇到同样的问题:

第一组宽度决定了所有其他组的宽度。

<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>