2

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

这似乎是针对不同分辨率、方向等调整视图的好方法,但是...

我有时会得到纵向和横向视图的 UI 规范,它们需要非常不同的内部结构<Grid><StackPanel>标签。尝试使用动画将这些结构中的一个变形为另一个似乎是一项非常艰巨的任务,更不用说随着规范的成熟而难以维护。

在我辞职采用 animate-a-single-layout 方法之前,我想确保不能简单地指定两个完全独立的 XAML 布局,类似于它在 Android 中的工作方式?

有人知道吗?

谢谢。

4

1 回答 1

3

唯一的缺点是你有一个很大的重复 XAML,就像你已经为 Landscape/Filled vs. Snapped 所做的那样。

但是,您可以做的是为您的景观布局上的某些特定属性设置动画,如果这可以让您到达您需要的位置。

例如,如果有 aGridView并且您的框需要从 250x250 变为 200x300,您只需复制您用于 的样式ItemTemplate,调整它以使宽度和高度值正确,然后使用Storyboard将您的ItemTemplatefrom更改"Standard250x250""MyNewPortrait200x300Style"

GridView现在,如果这是一个根本性的变化,比如 a和 a之间的区别ListView,你可能只需要忍受一些重复的布局代码并使用一些Storyboards 来折叠一个并显示另一个(就像模板对 Landscape/Filled vs.抢购)。

编辑

需要明确的是,我的意思是您最好的选择是通过动画调整样式属性,或者为您的其他布局创建一个完全独立的Panel(无论是GridStackPanel或其他),并使用动画将VisibilityLandscape one 设置为Collapsed和肖像一到Visible。这就是 Grid Template 处理 Snapped 的方式,而且效果非常好。比尝试变形根面板的每个子控件要容易得多。

于 2012-06-26T16:42:10.123 回答