UWP 拉伸网格视图 [英] UWP Stretch GridView
问题描述
如何水平拉伸GridViewItem?试图在 ItemContainerStyle
中设置属性 HorizontalContentAlignment
或样式属性.这没有帮助.
How to stretch GridViewItem horizontaly? Trying to set property HorizontalContentAlignment
or style property in ItemContainerStyle
. This does not help.
这是一个代码:
<GridView ItemsSource="{x:Bind Banks}" SelectionMode="None" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate x:DataType="model:Bank">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding Name}" Grid.Column="0" />
<GridView ItemsSource="{x:Bind Departments}" Grid.Row="1" HorizontalContentAlignment="Stretch" IsItemClickEnabled="True" VerticalContentAlignment="Stretch">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate x:DataType="model:Department">
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding Name}" Grid.Column="0" />
<TextBlock Text="{Binding Address}" Grid.Column="0" Grid.Row="1" />
<TextBlock Text="{Binding USD.Date}" Grid.Column="1" Grid.RowSpan="2"/>
<TextBlock Text="{Binding USD.Sell}" Grid.Column="2" />
<TextBlock Text="{Binding USD.Buy}" Grid.Column="2" Grid.Row="1"/>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
推荐答案
默认情况下,GridView
使用
虽然您已经将 HorizontalContentAlignment
或 HorizontalAlignment
设置为 Stretch
for GridViewItem
,但是 的大小>GridViewItem
受限于 ItemsWrapGrid
.
Although you've set HorizontalContentAlignment
or HorizontalAlignment
to Stretch
for GridViewItem
, but the size of GridViewItem
is limited by ItemsWrapGrid
.
ItemsWrapGrid
在显示多个项目的 ItemsControl
中从左到右或从上到下按顺序定位子元素.当元素超出容器边缘时,元素将定位在下一行或下一列.
ItemsWrapGrid
positions child elements sequentially from left to right or top to bottom in anItemsControl
that shows multiple items. When elements extend beyond the container edge, elements are positioned in the next row or column.
因此在 ItemsWrapGrid
中,项目不会被拉伸.
So in ItemsWrapGrid
, items won't be stretched.
如果你想水平拉伸 GridViewItem
,我们可以使用 ItemsStackPanel
而不是 ItemsWrapGrid
,如下所示:
If you want to stretch GridViewItem
horizontaly, we can use ItemsStackPanel
instead of ItemsWrapGrid
like following:
在Resources
中,添加一个ItemsPanelTemplate
和ItemsStackPanel
:
<Page.Resources>
<ItemsPanelTemplate x:Key="MyItemsPanelTemplate">
<ItemsStackPanel />
</ItemsPanelTemplate>
</Page.Resources>
然后在GridView
中使用这个模板:
Then use this template in GridView
:
<GridView HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ItemsPanel="{StaticResource MyItemsPanelTemplate}"
ItemsSource="{x:Bind Banks}"
SelectionMode="None">
...
<GridView Grid.Row="1"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
IsItemClickEnabled="True"
ItemsPanel="{StaticResource MyItemsPanelTemplate}"
ItemsSource="{x:Bind Departments}">
...
</GridView>
...
</GridView>
或者我们可以使用 ListView
而不是 GridView
作为 ListView
的默认 ItemsPanel
是 ItemsStackPanel
.
Or we can use ListView
instead of GridView
as ListView
's default ItemsPanel
is ItemsStackPanel
.
这篇关于UWP 拉伸网格视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!