如何在WinRT中进行动态网格布局

本文关键字:动态 网格 布局 WinRT | 更新日期: 2023-09-27 18:10:21

我想在我的页面网格有一个单列在纵向模式和有两列在横向模式。当设备是横向时,一些内容应该移动到第二列。我试过这么做,但做不到。

我做的一切都从代码后面。生成网格,添加子元素等。当方向改变时,我破坏当前布局并创建一个新布局。这种方法的问题是,任何输入的数据都将消失。这是一个巨大的代码,不可能放在这里。我想让这个布局改变自动发生。因此,在方向改变后,输入的任何数据都将被保留。

如何在WinRT中进行动态网格布局

诀窍是使用一个网格来容纳这两种状态。您可以使用VisualStates来分配不同的网格。行,网格。列,网格。RowSpan和Grid。ColumnSpan值设置为控件。这是使用Blend完成的,并且在XAML中是声明性的。你给每个州取一个名字。在代码中,您可以使用VisualStateManager检测窗口的大小变化以触发不同的状态。

不使用VisualStates也可以这样做。在这种情况下,在SizeChanged事件处理程序中,您必须自己为所有控件设置适当的值。

在Windows 10 UWP中,使用RelativePanel变得简单多了。你可以用比网格更灵活的方式来定位控件。

马丁