我在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();
}
可以更改相同的代码以动画控件的其他属性,例如Opacity,它可以按预期工作。
我可以设置ScaleTransform的动画来进行缩放,但它会改变控件的内部渲染,并且不会影响相邻控件的布局,这对我来说是一个问题。
希望我不会错过任何明显的东西,但这不应该只是工作吗?
答案 0 :(得分:29)
您只需要添加EnableDependentAnimation="True"
然后就可以了。
答案 1 :(得分:2)
依赖动画是导致Xaml重新布局的动画。昂贵;因此需要选择加入&#34;。
如果可能,您应该使用渲染变换并缩放元素的视觉效果。这是独立的意思,页面上的其他元素不需要移动以适应。