Xaml 在文本块上输入METRANSION后发生RenderTransform

Xaml 在文本块上输入METRANSION后发生RenderTransform,xaml,windows-8,microsoft-metro,windows-runtime,windows-store-apps,Xaml,Windows 8,Microsoft Metro,Windows Runtime,Windows Store Apps,我正在将enterthemetransition动画应用于TextBlock。TextBlock的样式为PageHeaderTextStyle,其中包含RenderTransform。我遇到的问题是,RenderTransform应用了一种转换效果,这种效果在动画播放完成后才会真正渲染。因此,它看起来很奇怪,因为动画滚动控件,然后翻译突然将文本捕捉到位。有人知道为什么会这样吗 有没有一种方法可以在考虑到翻译的情况下播放动画 转换: <Setter Property="RenderTrans

我正在将
enterthemetransition
动画应用于
TextBlock
TextBlock
的样式为
PageHeaderTextStyle
,其中包含
RenderTransform
。我遇到的问题是,
RenderTransform
应用了一种
转换
效果,这种效果在动画播放完成后才会真正渲染。因此,它看起来很奇怪,因为动画滚动控件,然后翻译突然将文本捕捉到位。有人知道为什么会这样吗

有没有一种方法可以在考虑到翻译的情况下播放动画

转换:

<Setter Property="RenderTransform">
    <Setter.Value>
        <TranslateTransform X="-2" Y="8"/>
    </Setter.Value>
</Setter>

文本块:

<TextBlock x:Name="pageTitle" Grid.Column="1" Text="{Binding Title}" Style="{StaticResource PageHeaderTextStyle}">
    <TextBlock.Transitions>
        <TransitionCollection>
            <EntranceThemeTransition/>
        </TransitionCollection>
    </TextBlock.Transitions>
</TextBlock>


从您的文字中可以看出,入口的METRANSION设置了文本块变换的动画。最简单的方法是将入口转换放在父元素上,或者将转换放在父元素上。您只需将文本块包装在网格中即可。我刚刚遇到了完全相同的问题。解决此问题的方法是将
文本块
嵌套在距离
网格
一层的位置,并在其上进行转换,例如使用第二个
网格

发生的情况是,变换会将变换应用于其每个子对象,但它们可能拥有的任何变换都会被临时替换,直到动画完成后,从而在随后应用原始变换时产生令人讨厌的“捕捉”

在以下示例中,将运行转换,替换
TextBlock
的转换,然后在转换结束后应用原始转换。你看到“快照”了吗

<Grid Style="{StaticResource LayoutRootStyle}">
    <TextBlock Text="Header" Style="{StaticResource PageHeaderTextStyle}"
        Margin="0,0,0,40"/>
</Grid>

希望这有帮助

你好,菲利普,谢谢你的回复。我尝试将TextBlock放在网格中,并将EnterthemeTransition应用于网格,但TextBlock上也会出现同样的效果。动画播放(滑动文本块),当到达路径末端时,应用RenderTransform,文本块“传送”到RenderTransform中定义的转换偏移量。如何将转换应用到tb,但将转换应用到网格?不,同样的事情。我将动画放在TextBlock上,将RenderTransform放在网格上,但同样的事情发生了。TextBlock滑动到位,然后捕捉到转换点。另一种选择是只使用边距调整TextBlock的位置。在您的情况下,您可以设置Margin=“-2,8,2,-8”。Filip,我会在有机会时尝试您的建议并相应更新。谢谢你的回复。
<Grid Style="{StaticResource LayoutRootStyle}">
    <Grid>
        <TextBlock Text="Header" Style="{StaticResource PageHeaderTextStyle}"
            Margin="0,0,0,40"/>
    </Grid>
</Grid>