我正在构建一个通用应用程序,我的Win8.1应用程序必须显示一个项目网格.通常情况下,网格由3列组成,但在较小的屏幕上,我希望项目包装,以便只有2列(甚至1列).这是我的代码:
每当我使应用程序变小时,项目不会自动换行.我尝试通过更改MaximumRowsOrColumns
属性来解决这个问题,VisualStateManager
但是由于WrapGrid
某些原因无法访问我,因此无效.从代码隐藏更改属性也不起作用,因为它再次无法访问WrapGrid.
我想这既WrapGrid
和ItemsWrapGrid
(有什么区别呢?)和ListView
和GridView
.没有区别.
有谁知道如何做到这一点?
你不应该做任何事情.它应该根据可用的客户区域进行换行.我唯一能想到它的东西就是你把它放在<GridView>
一个固定宽度的容器或一个容器中,这个容器的大小Auto
不会更新Observable Collection以通知Grid重绘/更新它自己.
例如,这不会包装.
<Grid > <GridView x:Name="myGridView" IsItemClickEnabled="True"> <GridView.ItemsPanel> <ItemsPanelTemplate> <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="5"/> </ItemsPanelTemplate> </GridView.ItemsPanel> <GridView.ItemTemplate> <!-- DATATEMPLATE --> </GridView.ItemTemplate> </GridView> </Grid>
然而,摆脱Width=1000
它,它将包装.
示例输出3种不同的尺寸