可以为纵向和横向指定两种不同的布局

本文关键字:两种 布局 横向 | 更新日期: 2023-09-27 18:30:07

我看到的Win8 Metro风格应用程序的C#示例和源代码使用故事板动画来修改页面以获得不同的视图(不仅是不同的全屏方向,还有快照填充视图模式)。

这似乎是一个很好的方法来调整你的视图,以适应不同的分辨率、方向等,但是。。。

我有时会得到肖像的UI规格&需要非常不同的CCD_ 1和CCD_。尝试使用动画将其中一个结构变形为另一个结构似乎是一项相当艰巨的任务,更不用说随着规范的成熟,很难维护了。

在我接受单布局动画方法之前,我想确保不可能简单地指定两个完全独立的XAML布局,类似于它在Android中的工作方式?

有人知道吗?

谢谢。

可以为纵向和横向指定两种不同的布局

唯一的缺点是您有一个大的重复XAML,就像您已经在Landscape/Fulled vs.Snapped中做的那样。

然而,你可以做的是在你的景观布局上动画化一些特定的属性,如果这能让你到达你需要的地方

例如,如果有一个GridView,并且您的长方体需要从250x250变为200x300,您可以复制用于ItemTemplate的样式,对其进行调整以使宽度和高度值正确,然后使用StoryboardItemTemplate"Standard250x250"更改为"MyNewPortrait200x300Style"

现在,如果这是一个根本性的变化,比如GridView<Grid>0之间的差异,您可能只需要使用一些重复的布局代码,并使用一些Storyboard来折叠其中一个并显示另一个(就像模板对Landscape/Fulled vs.Snapped所做的那样)。

编辑

需要明确的是,我的意思是,您的最佳选择是通过动画调整样式属性,或者为其他布局创建一个完全独立的Panel(无论是GridStackPanel还是其他什么),并使用动画将"横向"上的Visibility设置为Collapsed,将"纵向"设置为Visible。这就是网格模板处理Snapped的方式,它工作得非常好。比试图变形根面板的每个子控件要容易得多。