【问题标题】:grid inside gridview doesn't fill up the whole widthgridview 内的网格不会填满整个宽度
【发布时间】:2018-12-31 01:42:33
【问题描述】:

我已经尝试了几个小时,这应该是非常基本的,但我很难弄清楚这一点,我在网上找不到任何示例或解决方案。我正在尝试做一个绑定到项目列表的网格布局。我正在使用包含网格的 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>

【问题讨论】:

    标签: uwp uwp-xaml


    【解决方案1】:

    如果你真的只是想扩展gridview,那么你可以将Gridview的默认ItemsPanel改为使用ItemsStackPanel而不是ItemsWrapGridas 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>
    

    【讨论】:

      【解决方案2】:

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

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

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

      最好的问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-21
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        相关资源
        最近更新 更多