网格视图项目未采用所有宽度availabel UWP Xaml

最后发布: 2017-06-21 10:01:34


问题

我不想显示网格视图列表项,但是我不知道为什么网格视图(紫色)占据了我所不希望的所有位置,但是网格元素却没有占据它们包裹内容的所有宽度,我失踪了吗?

<GridView 
                Background="Purple"
                Grid.Row="1"
                Margin="20,20,20,0"
                ItemsSource="{Binding MyItems}"
                Style="{StaticResource GridViewStyle}"
                SelectionMode="Multiple"
            HorizontalContentAlignment="Stretch">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" 
                                HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch"
                Background="White"
                BorderThickness="1"
                BorderBrush="Gray">

                        <StackPanel Orientation="Horizontal" 
                        HorizontalAlignment="Stretch">
                            <TextBlock Text="{Binding Name, Mode=OneWay}"/>
                            <TextBlock Text="{Binding Creator, Mode=OneWay}"/>                            </StackPanel>

                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>
            <GridView.ItemContainerStyle>
                <Style TargetType="GridViewItem">
                    <Setter Property="Margin" Value="0,0,0,20"/>
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </GridView.ItemContainerStyle>
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid Orientation="Horizontal" 
                                   VerticalAlignment="Center"
                                   HorizontalAlignment="Center" 
                                   MaximumRowsOrColumns="1"/>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
        </GridView>

这是渲染:

在此处输入图片说明

c# xaml gridview uwp
回答

如果要这样堆叠项目,则应改用ListView 您要做的就是删除整个<GridView.ItemsPanel>...</GridView.ItemsPanel>代码,将GridView更改为ListView ,将TargetType="GridViewItem"更改为TargetType="ListViewItem"


回答

看起来您想要一个单列GridView。 尝试改用ListView,然后从代码中删除自定义ItemsPanelTemplate。 在ListView中,项目将使用所有可用宽度。

或者,在ItemsWrapGrid中设置Horizo​​ntalAlignment =“ Stretch”。