gridview 内的网格没有填满整个宽度
grid inside gridview doesn't fill up the whole width
我已经尝试了几个小时了,这应该是非常基本的,但我很难弄明白,我在网上找不到任何例子或解决方案。我正在尝试做一个绑定到项目列表的网格布局。我正在使用包含网格的 Gridview。我无法让它填满整个宽度。只占window的一半。如果我将网格从 GridView 中拉出,它可以正常工作并扩展到完整 window,所以我知道这是 GridView 的问题。下面是我的代码:
<Page.Resources>
<local:BoolToStringConverter x:Key="BoolToStringConverter" FalseValue="No" TrueValue="Yes" />
<helpers:TimActivityTypeToStringConverter x:Key="TimActivityTypeToStringConverter" />
<DataTemplate x:DataType="model:TimActivity" x:Key="TimDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{x:Bind Path=Type, Converter={StaticResource TimActivityTypeToStringConverter}}" />
<TextBlock Grid.Column="1" Text="{x:Bind StartTime}" />
<TextBlock Grid.Column="2" Text="{x:Bind EndTime}" />
<TextBlock Grid.Column="3" Text="{x:Bind From}" />
<TextBlock Grid.Column="4" Text="{x:Bind To}" />
<TextBlock Grid.Column="5" Text="{x:Bind Comment}" />
<TextBlock Grid.Column="6" Text="{x:Bind Path=Chargeable, Converter={StaticResource BoolToStringConverter}}" />
</Grid>
</DataTemplate>
</Page.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<GridView ItemsSource="{x:Bind Activities}"
IsItemClickEnabled="True"
ItemClick="GridView_ItemClick"
ItemTemplate="{StaticResource TimDataTemplate}">
</GridView>
</Grid>
如果你真的只想扩展 gridview,那么你可以将 Gridview 的默认值 ItemsPanel
更改为使用 ItemsStackPanel
而不是 ItemsWrapGrid
as this solution provided
<GridView ... >
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
但您的内容将看起来像这样。
根据您的代码,我猜您不希望它像那样对齐。只需添加此行也将解决上述问题
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</GridView.ItemContainerStyle>
如果我没记错的话,你说的是 ListViewItem
和 GridViewItem
的默认行为。
您可以通过将简单的 Style
应用于 GridView
:
来修改它
<GridView.Style>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</GridView.Style>
此致
我已经尝试了几个小时了,这应该是非常基本的,但我很难弄明白,我在网上找不到任何例子或解决方案。我正在尝试做一个绑定到项目列表的网格布局。我正在使用包含网格的 Gridview。我无法让它填满整个宽度。只占window的一半。如果我将网格从 GridView 中拉出,它可以正常工作并扩展到完整 window,所以我知道这是 GridView 的问题。下面是我的代码:
<Page.Resources>
<local:BoolToStringConverter x:Key="BoolToStringConverter" FalseValue="No" TrueValue="Yes" />
<helpers:TimActivityTypeToStringConverter x:Key="TimActivityTypeToStringConverter" />
<DataTemplate x:DataType="model:TimActivity" x:Key="TimDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{x:Bind Path=Type, Converter={StaticResource TimActivityTypeToStringConverter}}" />
<TextBlock Grid.Column="1" Text="{x:Bind StartTime}" />
<TextBlock Grid.Column="2" Text="{x:Bind EndTime}" />
<TextBlock Grid.Column="3" Text="{x:Bind From}" />
<TextBlock Grid.Column="4" Text="{x:Bind To}" />
<TextBlock Grid.Column="5" Text="{x:Bind Comment}" />
<TextBlock Grid.Column="6" Text="{x:Bind Path=Chargeable, Converter={StaticResource BoolToStringConverter}}" />
</Grid>
</DataTemplate>
</Page.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<GridView ItemsSource="{x:Bind Activities}"
IsItemClickEnabled="True"
ItemClick="GridView_ItemClick"
ItemTemplate="{StaticResource TimDataTemplate}">
</GridView>
</Grid>
如果你真的只想扩展 gridview,那么你可以将 Gridview 的默认值 ItemsPanel
更改为使用 ItemsStackPanel
而不是 ItemsWrapGrid
as this solution provided
<GridView ... >
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
但您的内容将看起来像这样。
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</GridView.ItemContainerStyle>
如果我没记错的话,你说的是 ListViewItem
和 GridViewItem
的默认行为。
您可以通过将简单的 Style
应用于 GridView
:
<GridView.Style>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</GridView.Style>
此致