14

我在 Windows 8 上的 Metro 风格 C#/XAML 应用程序中执行简单的基于情节提要的控件高度动画时遇到问题。

以下琐碎的 XAML 和代码片段背后的代码在 Silverlight 5 和 Windows Phone 7 中运行良好,但在 Windows 8 中没有任何作用(至少对我而言):

<Page.Resources>
    <Storyboard x:Name="expandAnimation">
        <DoubleAnimation Storyboard.TargetName="scaleButton" Storyboard.TargetProperty="Height" From="50" To="200" Duration="0:0:1"/>
    </Storyboard>
</Page.Resources>

<StackPanel Width="200">
    <Button x:Name="scaleButton" Click="scaleButton_Click" Content="Scale"/>
    <Button Content="Another button"/>
    <Button Content="Yet another button"/>
</StackPanel>

C#代码:

private void scaleButton_Click(object sender, RoutedEventArgs e)
{
    expandAnimation.Begin();
}

可以更改相同的代码来为控件的其他属性设置动画,例如按预期工作的不透明度。

我可以为 ScaleTransform 设置动画以进行缩放,但它会改变控件的内部渲染,并且不会影响相邻控件的布局,这对我来说是个问题。

希望我在这里没有遗漏任何明显的东西,但这不应该有效吗?

4

2 回答 2

29

您只需要添加EnableDependentAnimation="True",然后它应该可以正常工作。

于 2012-05-07T18:42:43.683 回答
2

依赖动画是一种会导致 Xaml 重新布局的动画。昂贵的; 因此需要“选择加入”。

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.media.animation.pointanimation.enabledependentanimation.aspx

如果可能,您应该使用渲染转换并缩放元素的视觉效果。这是独立的意思是页面上的其余元素不需要移动来适应。

于 2014-11-14T21:15:27.720 回答