我试图构建一个动画效果,在屏幕底部按下一个“按钮”,会导致StackPanel的动画“向上滑动”--有点像在显示菜单时由应用程序条实现的幻灯片向上移动。
我在http://www.cespage.com/silverlight/tutorials/wp7tut24.html的示例中尝试了几种效果,它使用的动画如下:
<VisualState x:Name="Expanded">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="ContentScaleTransform"
Storyboard.TargetProperty="ScaleY" To="1" Duration="0"/>
<DoubleAnimation Storyboard.TargetName="RotateButtonTransform"
Storyboard.TargetProperty="Angle" To="180" Duration="0"/>
</Storyboard>
然而,使用这个示例并不能给我想要的效果,因为内容容器的高度“跳跃”,即使内容缩放本身是动画的。
我也玩过动画的容器/内容高度:
<DoubleAnimation Storyboard.TargetName="Content"
Storyboard.TargetProperty="Height" To="200" Duration="0"/>
..。但是,由于高度是由StackPanel覆盖的(而且我不能使用MaxHeight,因为这不是动画的正确属性),所以这并不有效。
关于我应该做什么,有什么想法或建议吗?
注意-在任何人评论WP7设计指南之前.这是客户设计/规范,它似乎适合于Metro :)
发布于 2011-08-16 09:03:10
谢谢你的建议-我试了几件事.最后我说:
一些浓缩的代码:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ViewStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Expanded">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BorderTranslateTransform"
Storyboard.TargetProperty="Y" To="0" Duration="0"></DoubleAnimation>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BorderTranslateTransform"
Storyboard.TargetProperty="Y" To="154" Duration="0"></DoubleAnimation>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
Background="{TemplateBinding Background}"
Margin="0,0,0,0">
<Border.RenderTransform>
<TranslateTransform x:Name="BorderTranslateTransform"></TranslateTransform>
</Border.RenderTransform>
<Grid>
// stuff here
</Grid>
</Border>
发布于 2011-08-11 16:44:40
你能把边距动画化吗?
这不是一个依赖属性,因此它需要一些努力,但可以完成。(如果你需要的话,我有个例子。)
发布于 2011-08-12 10:26:17
这台机器上没有安装WP7 SDK,所以所有东西都来自内存。吃点盐吧。而且,我假设使用硬编码的大小是可以的(否则就会困难得多)。
首先,为了保持一致性,通过defalut使IsExpanded
属性false
:
public static readonly DependencyProperty IsExpandedProperty =
DependencyProperty.Register("IsExpanded", typeof(bool),
typeof(Expander), new PropertyMetadata(false));
在名为“ContentPresenter”的Height="0"
上添加Height="0"
。
在名为“展开”的Storyboard
of VisualState
中,添加以下动画:
<DoubleAnimation Storyboard.TargetName="Content"
Storyboard.TargetProperty="Height"
To="200"
Duration="0:0:1"/>
在名为“折叠”的Storyboard
of VisualState
中添加以下动画:
<DoubleAnimation Storyboard.TargetName="Content"
Storyboard.TargetProperty="Height"
To="0"
Duration="0:0:1"/>
根据您的喜好调整动画的To
和Duration
属性。
对于内容的幻灯片动画,尝试删除正在运行"ContentScaleTransform“的动画。在这种情况下,这个动画会产生更多的“增长”或“拉伸”效果。
https://stackoverflow.com/questions/7028625
复制相似问题