我正在努力将Windows 8.1应用程序迁移到Windows 10通用应用程序,我在GridView
中看到了不同的外观。
在Windows 8.1中,它的行为正确并显示两行(或更多,取决于高度):
然而,在Windows 10中,无论高度如何,我只得到一行:
GridView
有足够的空间来包裹两行,但无论高度如何,它都是一行。两者都使用相同的XAML定义:
<GridView Name="MyGridView"
Margin="0,50,0,0"
IsItemClickEnabled="True"
ItemsSource="{Binding AppPages}">
....
</GridView>
我在Windows 10应用程序中尝试了不同的ItemsPanel
变体,但我得到1行水平布局或1列垂直布局。 Windows 10中是否有新属性或我需要设置的内容,以便{?1}}在高度允许时显示多行?
修改
所描述的行为仅使用默认的GridView
设置。我也尝试了以下内容:
GridView
同时使用 <GridView.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Vertical" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
方向和Vertical
。但是Windows 8.1应用程序和Windows 10应用程序的布局都没有指定任何内容,只有Horizontal
及其GridView
。以下是ItemTemplate
的整个XAML:
GridView
答案 0 :(得分:1)
我可以看到您尝试使用VariableSizedWrapGrid
作为ItemPanel
,正如我所说,默认情况下,它在UWP应用和Win8中都使用ItemsWrapGrid
作为ItemPanel
。 1个应用程序,您可以在空白的uwp应用程序或空白的Windows 8.1应用程序中进行测试。
在使用VariableSizedWrapGrid
作为ItemPanel
,GridView
控制布局时,只需在两个应用中测试您的代码,因为它们位于您的照片中,不同于Win8.1到Win10。
所以我猜你可能会在代码中的某个地方使用VariableSizedWrapGrid
使用GridView
样式,例如当未定义样式的x:Key
属性时,此样式可以应用于页面中的所有目标类型控件。
如果每个图块/单元格基于内容可变大小,通常我们会使用VariableSizedWrapGrid
。但是,根据您的图片,我认为GridView
的每个项目都有相同的尺寸。
所以在这种情况下,您可以像这样修改样式:
<Page.Resources>
<Style x:Key="GridViewStyle1" TargetType="GridView">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
并将这种风格专门应用于GridView
,如下所示:
<GridView x:Name="MainGridView"
Style="{StaticResource GridViewStyle1}"
ItemsSource="{Binding AppPages}"
IsItemClickEnabled="True"
SelectionMode="None">