GridView 项目宽度
GridView Items Width
得到一个 GridView,其项目宽度由第一个宽度设置(屏幕截图)
如何为每个项目设置一些自动宽度?
<GridView ItemsSource="{x:Bind PopularItems}" Style="{StaticResource GVStyle}" Height="230">
<GridView.ItemTemplate>
<DataTemplate x:Name="GVTemp" x:DataType="models:LessDetails">
<StackPanel>
<Image Height="180" Width="132" Source="{x:Bind Img}" />
<TextBlock Margin="4,4,0,4" HorizontalAlignment="Stretch" TextAlignment="Center"
Text="{x:Bind Name}" Style="{ThemeResource BodyTextBlockStyle}" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
您不能在 GridView 控件中自动调整每个项目的宽度,它被设计为使用第一个项目的大小作为统一大小(每个项目的 ListViewItemPresenter 具有相同的大小)。
对于自动调整大小的场景,我建议您使用 StackPanel 或创建自定义 ItemsControl。
使用 ItemsStackPanel:
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
唯一的缺点是它不包装项目。为此你可以使用 ItemsWrapGrid
但你失去了自动宽度功能(第一个项目决定所有项目的宽度)。
还有VariableSizedWrapGrid
可以通过给物品一定的ColumnSpan/RowSpan来使用,但它与自动计算宽度不太一样。
如果您想两全其美,可能需要编写自己的自定义面板。
更新: 对于允许自动宽度和项目换行的解决方案,您可以使用 WrapPanel
control from the UWP Community Toolkit.
得到一个 GridView,其项目宽度由第一个宽度设置(屏幕截图)
如何为每个项目设置一些自动宽度?
<GridView ItemsSource="{x:Bind PopularItems}" Style="{StaticResource GVStyle}" Height="230">
<GridView.ItemTemplate>
<DataTemplate x:Name="GVTemp" x:DataType="models:LessDetails">
<StackPanel>
<Image Height="180" Width="132" Source="{x:Bind Img}" />
<TextBlock Margin="4,4,0,4" HorizontalAlignment="Stretch" TextAlignment="Center"
Text="{x:Bind Name}" Style="{ThemeResource BodyTextBlockStyle}" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
您不能在 GridView 控件中自动调整每个项目的宽度,它被设计为使用第一个项目的大小作为统一大小(每个项目的 ListViewItemPresenter 具有相同的大小)。
对于自动调整大小的场景,我建议您使用 StackPanel 或创建自定义 ItemsControl。
使用 ItemsStackPanel:
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
唯一的缺点是它不包装项目。为此你可以使用 ItemsWrapGrid
但你失去了自动宽度功能(第一个项目决定所有项目的宽度)。
还有VariableSizedWrapGrid
可以通过给物品一定的ColumnSpan/RowSpan来使用,但它与自动计算宽度不太一样。
如果您想两全其美,可能需要编写自己的自定义面板。
更新: 对于允许自动宽度和项目换行的解决方案,您可以使用 WrapPanel
control from the UWP Community Toolkit.