【问题标题】:Grid view Item does not take all width availabel UWP Xaml网格视图项目不占用所有宽度可用的 UWP Xaml
【发布时间】:2017-06-21 18:53:11
【问题描述】:

我不想显示网格视图列表项,但我不知道为什么网格视图(紫色)占据了我不想显示的所有位置,但网格元素并没有占据它们包裹内容的所有可用宽度,我错过了什么?

<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


    【解决方案1】:

    如果您希望项目像这样堆叠,您应该使用 ListView 代替。您所要做的就是删除整个&lt;GridView.ItemsPanel&gt;...&lt;/GridView.ItemsPanel&gt; 代码,将GridView 更改为ListView 并将TargetType="GridViewItem" 更改为TargetType="ListViewItem"

    【讨论】:

    • 如果我使用列表视图项目,我无法将选择模式自定义为像网格视图一样
    • 选择模式应该和ListView中的一样。你说的是哪种模式?两个控件都继承自同一个基类。
    • 我使用网格视图是因为我没有找到像 grd 视图那样进行选择的方法:我不想选择蓝色边框,也不想看到复选框当我选择多个列表项时的每个列表项
    • 您可以通过将IsMultiSelectCheckBoxEnabled设置为False,轻松自定义边框颜色和关闭复选框功能。
    • 您可以更轻松地修改样式,在您的DataTemplate 中使用Grid,这样它就可以占用所有可用空间,并将其BorderThicknessBorderBrush 设置为您想要的任何内容想要。
    【解决方案2】:

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

    或者在您的 ItemsWrapGrid 中设置 Horizo​​ntalAlignment="Stretch"。

    【讨论】:

    • 设置HorizontalAlignment="Stretch" 不会拉伸内容。
    猜你喜欢
    • 2014-10-26
    • 2015-04-27
    • 2016-06-06
    • 2015-11-27
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多