Nat*_*ate 6 .net wpf user-interface animation storyboard
有没有办法调整WPF UserControl的大小,使子控件不会失败?
我有这个故事板:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" Storyboard.TargetName="MyUserControl" To="145" From="0" Duration="0:0:1" />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
这很好用; 它取决于我从高度零到高度145的控制 - 问题是随着高度属性的变化,我怀疑,由于它们的HorizontalAlignment和VerticalAlighment属性,内部的所有子控件开始跳转.有没有办法可以在动画结束前禁用它?
我试图创建这个UserControl"幻灯片"进入视图的错觉 - 所以如果我发生错误,我会对其他方法持开放态度.
一切都在"跳跃",因为每次Height控件更改时,所有包含的控件都会根据新的可用空间重新定位.
为了达到预期的效果,您应该使用RenderTransform而不是更改Height控件的实际效果.
这是你如何做到这一点.首先,在控件上添加属性ScaleTransform值RenderTransform:
<MyUserControl.RenderTransform>
<ScaleTransform ScaleY="0" />
</MyUserControl.RenderTransform>
Run Code Online (Sandbox Code Playgroud)
然后,修改动画的目标属性以更改变换的ScaleY属性:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Storyboard.TargetName="MyUserControl" To="145" Duration="0:0:1" />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
更新:
实现幻灯片到视图效果的另一种方法是使用TranslateTransform负值Y:
<MyUserControl.RenderTransform>
<TranslateTransform Y="-1000" />
</MyUserControl.RenderTransform>
Run Code Online (Sandbox Code Playgroud)
然后,将其Y属性设置为0:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)" Storyboard.TargetName="MyUserControl" To="0" Duration="0:0:1" />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |