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>

如果我没记错的话,你说的是 ListViewItemGridViewItem 的默认行为。

您可以通过将简单的 Style 应用于 GridView:

来修改它
<GridView.Style>
    <Style TargetType="GridViewItem">
         <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
         <Setter Property="VerticalContentAlignment" Value="Stretch"/>
    </Style>
</GridView.Style>

此致