在VariableSizedWrapGrid中水平包装项目

时间:2013-01-16 13:31:36

标签: xaml windows-8

我有一个包含VariableSizedWrapGrid的GridView,就像这样...

    <local:MyGridview    
        Padding="116,0,0,0"        
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Grouped Items"
        Grid.Column="1"
        Grid.Row="1"
        SelectionMode="None"
        ItemTemplateSelector="{StaticResource templateSelector}"
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" 
        IsItemClickEnabled="True"
        ItemClick="itemGridView_ItemClick">

        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal" Margin="0"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>

        <GridView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <Grid>
                            <TextBlock Text="{Binding Key}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
                        </Grid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
                <GroupStyle.Panel>
                    <ItemsPanelTemplate>
                        <VariableSizedWrapGrid Orientation="Vertical" ItemWidth="1" ItemHeight="1" Margin="0,3,40,0" />
                    </ItemsPanelTemplate>
                </GroupStyle.Panel>
            </GroupStyle>
        </GridView.GroupStyle>

    </local:MyGridview>

显示这样的项目......

我想让它水平而不是垂直地堆叠项目,以便橙色瓷砖位于蓝色瓷砖旁边而不是它下方

我尝试将VariableSizedWrapGrid的Orientation更改为Horizo​​ntal,但这种情况发生了....

我做的事真的很傻吗?

1 个答案:

答案 0 :(得分:0)

为什么将ItemWidth和ItemHeight设置为1?您是否从代码中设置了正确的ColumnSpan和RowSpan值?我建议你将ItemWidth和ItemHeight设置为更大的东西,也许是最小项目的大小。 VariableSizedWrapGrid布局算法并不完美,在我的样本中,有时它会根据需要水平放置小项目,有时 - 不(我根本不设置VariableSizedWrapGrid方向)。