问题描述
如何水平拉伸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
中,项目不会被拉伸.
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 拉伸网格视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!