Xaml UWP社区工具包AdaptiveGridView控件,仅包含一项

Xaml UWP社区工具包AdaptiveGridView控件,仅包含一项,xaml,gridview,uwp,uwp-xaml,windows-community-toolkit,Xaml,Gridview,Uwp,Uwp Xaml,Windows Community Toolkit,我正在使用UWP社区工具包制作一个媒体应用程序,以使用AdaptiveGridView控件显示视频库内容 问题:当项目非常少或例如我只有一个项目时,它会在整个可用宽度上展开,这看起来非常糟糕,考虑到它的高度是有限的,并且不会改变,只有宽度在整个屏幕上展开,所以我的项目的缩略图看起来非常糟糕。所以,当我一行有4个或更少的项目(在这个特定的笔记本电脑分辨率中)时,由于宽度扩展,它们看起来不好,但一行有5个以上的项目看起来不错,因为它们的比例非常好 尝试: 我试图在我的项目的数据模板中设置stackp

我正在使用UWP社区工具包制作一个媒体应用程序,以使用AdaptiveGridView控件显示视频库内容

问题:当项目非常少或例如我只有一个项目时,它会在整个可用宽度上展开,这看起来非常糟糕,考虑到它的高度是有限的,并且不会改变,只有宽度在整个屏幕上展开,所以我的项目的缩略图看起来非常糟糕。所以,当我一行有4个或更少的项目(在这个特定的笔记本电脑分辨率中)时,由于宽度扩展,它们看起来不好,但一行有5个以上的项目看起来不错,因为它们的比例非常好

尝试: 我试图在我的项目的数据模板中设置stackpanel的最大宽度属性,以便项目不会扩展超过特定的宽度,效果良好,但现在的问题是项目之间的距离,我的项目(stackpanel)内容仍然有限,但整个gridviewitem会扩展,因此覆盖了大量无用的空间,如下图所示

  • 蓝色问号表示由于每个项目的扩展而产生的无用空间
  • 红线框显示具有扩展额外空间的一个项目的实际边界
  • 显然,如果我将窗口调整为更小的屏幕,空间会减少,但这并不是所有屏幕大小的最佳选择

    摘要: adaptiveGridView的默认设置(如UWP社区工具包示例中的设置)在我有很多项(即:超过5项)的情况下非常适合。但如果项目是1或2,它会在整个屏幕上展开,这看起来很糟糕,因为在完全展开时宽度几乎变为700,高度保持在156,因为我将其设置为156,如果我删除图像的高度,一个项目将占据整个屏幕,如果只有1个项目,这不是我想要的,因为这对用户来说也很糟糕(显然)

    这是我的密码

    gridview

    <controls:AdaptiveGridView Name="SuggestionGridView" 
                               Style="{StaticResource MainGridView}"                            
                               SelectionChanged="SelectionChanged"
                               ItemsSource="{x:Bind Suggestions, Mode=OneWay}">
        <controls:AdaptiveGridView.ItemTemplate>
            <DataTemplate  x:DataType="data:Video">
                <StackPanel Margin="4" MaxWidth="276">
                    <Grid>
                        <Image      Source="{x:Bind Thumbnail}" Style="{StaticResource GridViewImage}"/>
                        <Border Style="{StaticResource TimeBorder}">
                                <TextBlock Text="{x:Bind Duration}" Foreground="White"/>
                        </Border>
                    </Grid>
                    <TextBlock Text="{x:Bind Name}"  Style="{StaticResource GridViewVideoName}"/>
                    <TextBlock Text="{x:Bind ParentName}"  Style="{StaticResource GridViewParentName}"/>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                        <TextBlock Text="{x:Bind Views}" Style="{StaticResource GridViewViews}"/>
                        <TextBlock Text="Views" HorizontalAlignment="Right"/>
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </controls:AdaptiveGridView.ItemTemplate>
    </controls:AdaptiveGridView>
    
    
    
    风格

    <Style TargetType="controls:AdaptiveGridView" x:Key="MainGridView">
        <Setter Property="Grid.Row" Value="1"/>
        <Setter Property="OneRowModeEnabled" Value="False"/>
        <Setter Property="DesiredWidth" Value="264"/>
        <Setter Property="SelectionMode" Value="Single"/>
    </Style>
    
    <Style TargetType="Image" x:Key="GridViewImage">
        <Setter Property="Height" Value="156"/> <!--if I remove this property then one item expands to full availble height and width and looks really bad specially with the thumbnail.-->
        <Setter Property="Stretch" Value="UniformToFill"/>
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
    

    在这种情况下,已经有一个属性可以帮助您。尝试将控件上的
    StretchContentForSingleRow
    设置为
    False