gridview内的网格不能填满整个宽度

时间:2018-12-30 10:32:59

标签: uwp uwp-xaml

我已经尝试了几个小时,这应该是非常基本的,但是我很难解决这个问题,而且我找不到在线的任何示例或解决方案。我试图做一个绑定到项目列表的网格布局。我正在使用包含网格的Gridview。我无法填满整个宽度。它只占据一半的窗口。如果我将网格从GridView中拉出,它可以正常工作并扩展到整个窗口,因此我知道这是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>

2 个答案:

答案 0 :(得分:1)

如果您真的只想扩展gridview,则可以将Gridview的默认ItemsPanel更改为使用ItemsStackPanel而不是ItemsWrapGrid as this solution provided

<GridView ... >
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsStackPanel />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>

但是您的内容将改为这样。

Preview of the code 根据您的代码,我猜您不希望这样对齐。只需添加此行也可以解决上述问题

<GridView.ItemContainerStyle>
    <Style TargetType="GridViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</GridView.ItemContainerStyle>

Preview of the code

答案 1 :(得分:0)

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

您只需将简单的Style应用于GridView即可对其进行修改:

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

最诚挚的问候