UWP 网格中的内部项目未拉伸 XAML

Inner Items in UWP Grid not stretching XAML

此列表视图中的项目没有跨越屏幕宽度时出现问题。抱歉,如果我的代码草率。这有点新鲜。我确实有类似代码的类似页面。

提前致谢!

不是完整代码 - 不确定您是否需要它。

<ListView x:Name="listView" DataContext="{Binding ServicesCvs}" ItemsSource="{Binding}" Margin="0,80,0,0" HorizontalContentAlignment="Stretch">

                   <ListView.ItemTemplate>

                    <DataTemplate>
                        <Grid>

                                <Button Command="{Binding DataContext.SelectServiceCommand, ElementName=serviceSelectionPage}"
                                    CommandParameter="{Binding Text, ElementName=ServiceIdTextBlock}">
                                    <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="0*"/>
                                            <ColumnDefinition Width="1*"/>
                                            <ColumnDefinition Width="1*"/>
                                            <ColumnDefinition Width="1*"/>
                                            <ColumnDefinition Width="1*"/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock x:Name="ServiceIdTextBlock" Grid.Column="1" FontFamily="Arial" Text="{Binding ServiceId}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="#FF18417C" Margin="10,0,0,0"/>
                                        <TextBlock x:Name="ServiceType" Grid.Column="2" FontFamily="Arial" Text="{Binding ServiceTypeId}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="#FF414B59"/>
                                        <TextBlock x:Name="AssetId_TextBlock" Grid.Column="3" FontFamily="Arial" Text="{Binding AssetId}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="#FF4D7CC1"/>
                                        <TextBlock x:Name="ProductItemId_TextBlock" Grid.Column="4" FontFamily="Arial" Text="{Binding ProductItemId}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="#FF414B59"/>

                                    </Grid>
                                </StackPanel>
                                </Button>
                            </Grid>

                    </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

两个问题:

  1. 设置按钮的 HorizontalContentAlignment="Stretch"。您的子控件可以指定拉伸,但它们只会拉伸到父控件提供给它们的 space 范围内。
  2. 删除水平 StackPanel。 StackPanel 覆盖拉伸并有效地表示 "reserve as much space as the child controls require for layout and no more".

我不确定这是否与您遇到的问题相同,但让我为 listview/gridview 疯狂的一件事是 容器不会伸展。模板会拉伸,但仅限于容器,默认情况下不会拉伸。

解决方法是通过向您的资源添加类似这样的内容(在页面上或 app.xaml 资源字典中:

来覆盖 ListViewItem/GridViewItem 的样式
<Style TargetType="ListViewItem">
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>

您不会在设计器中看到结果 (!!!) 但是当您 运行 它时,它应该会拉伸项目的内容以填满屏幕

希望对您有所帮助!

把它放在你的 ListView 中,它也可以在设计器中工作

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListView.ItemContainerStyle>

正如 Mark Feldman 所说,删除 StackPanel 并设置按钮的 Horizo​​ntalContentAlignment="Stretch"。