如何在缩放级别更改时重新排列WrapGrid内容?

时间:2012-06-14 13:37:12

标签: xaml windows-8 microsoft-metro

我正在开发一个Windows 8 Metro应用程序,其布局非常简单。它由一个WrapGrid括在ItemsControl中的单个页面组成,而ScrollViewer又包含在<Page ...> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid x:Name="MainGrid" Margin="120,140,32,0"> <ScrollViewer x:Name="ScrollView" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch"> <ItemsControl x:Name="itemsControl" HorizontalAlignment="Stretch"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="Stretch" Margin="0" HorizontalAlignment="Center"> <WrapGrid.ChildrenTransitions> <TransitionCollection> <EntranceThemeTransition /> <RepositionThemeTransition /> </TransitionCollection> </WrapGrid.ChildrenTransitions> </WrapGrid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> </ScrollViewer> </Grid> <Page.BottomAppBar> ... </Page.BottomAppBar> </Page> 中。这是应用程序主页的XAML代码:

WrapGrid

当用户单击应用程序栏中的某个按钮时,还有一个用户控件,用于创建新实例并以编程方式添加到ItemsControl。正如使用ItemsControl所预期的那样,控件实例按顺序堆叠在一行中,直到屏幕上没有空间,此时它们出现在一个新行中,需要向下滚动为了看到他们。到目前为止一切都很好。

现在我想实现一个功能,但我不知道如何实现它。我想要的是以下内容:当用户缩小应用程序时,导致控件显得更小,我希望使用新的可用空间,以便每行可以显示更多控件;相反,当前的行为是ItemsControl本身被减少,额外的周围空间未被使用。

例如,假设用户添加了10个控件。一行中有4个控件的空间,因此显示3行控件,包含4个,4个和2个控件。如果用户缩小,现在连续有7个控件的空间,我希望{{1}}重新排列自己,这样现在只有两行有7和3个控件。我怎么能做到这一点?

我希望我已经正确地解释了自己。如果我的问题不够清楚,请不要犹豫。非常感谢你!

0 个答案:

没有答案