LayoutRootStyle中的EntranceThemeTransition如何级联到子控件?

时间:2013-03-26 22:12:49

标签: xaml windows-runtime windows-store-apps winrt-xaml

此刻我正在浏览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来让这一个控件移动?为什么它以不同的速度移动到它应该在里面的控件!?

1 个答案:

答案 0 :(得分:2)

WebView是一个特殊控件,它位于自己的HWND(经典WinAPI窗口)中,而不是在深度平坦空间(木星窗口)中呈现的基于XAML的典型UI的其余部分。因此,它在所有其他控件之上生活在自己的空域(bing it)。您通常将其替换为其他一些控件(例如,矩形),当您想要为其设置动画或填充其他一些内容(例如应用栏)时,该控件(例如,矩形)填充了与WebView同步的WebViewBrush

我认为(某些)主题动画使用Windows Animation Manager或其他一些机制而不是常规的Storyboard,并且WebView控件可能无法正常使用它。

我的建议是 - 如果它与您尝试使用的内容不起作用(EntranceThemeTransition) - 使用不同的东西(常规的基于Storyboard的动画)。