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

时间:2015-08-28 02:40:15

标签: c# dynamic windows-runtime grid windows-8.1

我希望页面中的网格在纵向模式下有一列,在横向模式下有两列。当设备为横向时,某些内容应移至第二列。我试过这样做但不能。

我正在从代码背后做一切。生成网格,添加子项等。当Orientation更改时,我会销毁当前布局并创建一个新布局。这种方法的问题是,任何输入的数据都将消失。这是一个巨大的代码,不可能放在这里。我希望这种布局更改自动发生。因此,输入的任何数据都会在方向更改后保留。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

诀窍是让一个网格适应两种状态。您可以使用VisualStates将不同的Grid.Row,Grid.Column,Grid.RowSpan和Grid.ColumnSpan值分配给控件。这是使用Blend完成的,在XAML中是声明性的。你给每个州一个名字。在代码中,您可以使用VisualStateManager检测窗口的大小更改以触发不同的状态。

您也可以在没有VisualStates的情况下执行此操作。在那种情况下,在SizeChanged的事件处理程序中,您必须自己为所有控件设置适当的值。

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

马丁