Windows 8.1 XAML Wrap Stackpanel Children

时间:2014-02-27 16:49:42

标签: xaml windows-store-apps windows-8.1

我在Stackpanel内部有一堆水平方向的列表视图。我希望列表一旦到达Stackpanel的末尾就会换行。

这对我来说似乎很容易,但我似乎无法弄清楚如何。

enter image description here

3 个答案:

答案 0 :(得分:2)

StackPanel没有换行。请改为WrapGrid

答案 1 :(得分:0)

使用StackPanel作为容器,您无法做到这一点。通常我使用Grid作为父容器。它更灵活。

这样的事情:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <ListView Grid.Column="0"/>
    <ListView Grid.Column="1"/>
    <ListView Grid.Column="2"/>
</Grid>

答案 2 :(得分:0)

您可以使用ItemsControl进行尝试,并使用WrapGrid作为其ItemsPanel模板。这是我正在使用的代码:

<ItemsControl Width="Auto" Height="Auto" IsHitTestVisible="False" ItemsSource="{Binding AnnotationTypesShown}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Height="50" Width="Auto" Margin="0,0,5,0">
                        <Image Source="{Binding IconImage}" Stretch="UniformToFill" Margin="0,0,0,0" Width="25" Height="25"/>
                        <TextBlock Text="{Binding TypeName}" Width="Auto" Margin="5,10,5,0" Style="{StaticResource DefaultTextBlockStyle}"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" VerticalAlignment="Top"></WrapGrid>                        
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>

以下是完整视图的结果 enter image description here

并在包装视图中

enter image description here

相关问题