【发布时间】:2014-09-20 20:36:28
【问题描述】:
我正在构建一个通用应用程序,而我的 Win8.1 应用程序必须显示一个项目网格。通常网格由 3 列组成,但在较小的屏幕上,我希望将项目换行,以便只有 2 列(甚至 1 列)。这是我的代码:
<GridView ItemsSource="{Binding Regions}" IsItemClickEnabled="True">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="3" MinWidth="400" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="10">
<Image Source="{Binding Code, Converter={StaticResource FlagIconConverter}, ConverterParameter='/Assets/Icons/Flags/{0}.png'}" Width="30" />
<TextBlock Text="{Binding NativeName}" Style="{StaticResource BodyTextBlockStyle}" Margin="10,0,0,10" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
每当我缩小应用程序时,项目不会自动换行。我尝试通过将MaximumRowsOrColumns 属性更改为VisualStateManager 来解决此问题,但这不起作用,因为由于某种原因它无法访问我的WrapGrid。从代码隐藏更改属性也不起作用,因为它再次无法访问 WrapGrid。
我用WrapGrid 和ItemsWrapGrid 都试过了(到底有什么区别?)和ListView 和GridView。没有区别。
有谁知道如何做到这一点?
【问题讨论】:
标签: xaml grid windows-runtime winrt-xaml windows-8.1