此刻我正在浏览WinRT-XAML tutorials,我无法弄清楚为什么WebView控件不会像其他控件那样执行相同的入口动画。 Adding animations and transitions
上有一个部分解释说不需要这样做,并且需要带有动画的故事板。
我找到了setter的源代码,它将转换应用于StandardStyles.xaml中的其他控件。
<Style x:Key="LayoutRootStyle" TargetType="Panel">
<Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundThemeBrush}"/>
<Setter Property="ChildrenTransitions">
<Setter.Value>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Setter.Value>
</Setter>
</Style>
这似乎应该将EntranceThemeTransition应用于具有此样式的面板的每个子控件 - 或者它应该仅应用到其直接子节点的过渡。它似乎正在做两件事。
此外,我预计没有任何定位信息的控件将与其父级一起动画。情况似乎并非如此,WebView的直接父级动画效果很好。
在这种情况下,什么使WebView如此特别?除了它不是默认模板的一部分。为什么我们需要添加一个PopInThemeAnimation和Storyboard来让这一个控件移动?为什么它以不同的速度移动到它应该在里面的控件!?
答案 0 :(得分:2)
WebView
是一个特殊控件,它位于自己的HWND(经典WinAPI窗口)中,而不是在深度平坦空间(木星窗口)中呈现的基于XAML的典型UI的其余部分。因此,它在所有其他控件之上生活在自己的空域(bing it)。您通常将其替换为其他一些控件(例如,矩形),当您想要为其设置动画或填充其他一些内容(例如应用栏)时,该控件(例如,矩形)填充了与WebView同步的WebViewBrush
。
我认为(某些)主题动画使用Windows Animation Manager或其他一些机制而不是常规的Storyboard,并且WebView控件可能无法正常使用它。
我的建议是 - 如果它与您尝试使用的内容不起作用(EntranceThemeTransition) - 使用不同的东西(常规的基于Storyboard的动画)。