我正在寻找一些方法来通过Storyboard
中定义的动画更改网格列的宽度(或行的高度)。我已经找到了一些WPF应用程序的解决方案,但是在Windows Store编程的情况下它们都没用,例如:
Grid Column changing Width when animating
how to change the height of a grid row in wpf using storyboard
http://www.codeproject.com/Articles/18379/WPF-Tutorial-Part-2-Writing-a-custom-animation-cla
通过创建继承自时间轴的自定义类,可以获得此类结果吗?如果是这样,哪些组件应该被覆盖以便正确实施?
答案 0 :(得分:2)
您应该可以使用简单的DoubleAnimation
。请务必将EnableDependentAnimation=True
设置为大纲here。
尝试解决问题时要注意的一点是ColumnDefinitions
是GridLength
struct
。您可以在here找到有关它们的更多信息。您需要将动画设置为Value
属性。
答案 1 :(得分:2)
这是一个动画Grid ColumnDefinition MaxWidth动画的示例方法。
private void Animate(ColumnDefinition column)
{
Storyboard storyboard = new Storyboard();
Duration duration = new Duration(TimeSpan.FromMilliseconds(500));
CubicEase ease = new CubicEase { EasingMode = EasingMode.EaseOut };
DoubleAnimation animation = new DoubleAnimation();
animation.EasingFunction = ease;
animation.Duration = duration;
storyboard.Children.Add(animation);
animation.From = 1000;
animation.To = 0;
animation.EnableDependentAnimation = true;
Storyboard.SetTarget(animation, column);
Storyboard.SetTargetProperty(animation, "(ColumnDefinition.MaxWidth)");
storyboard.Begin();
}