我正试图为我的应用制作自定义汉堡包菜单。我有所有设置的布局,但由于某种原因,我的DoubleAnimation
并没有像我预期的那样工作。我尝试在Windows 10上尝试类似于Cortana的汉堡包菜单。我在我的代码中创建Storyboard
和DoubleAnimation
(我仍然遇到同样的问题)即使我的动画是在XAML中创建的)。这就是我所拥有的:
menuButton.Click += (s, e) => {
if (menuIsOpen) {
Animate(
menuPanel,
"Width",
ActualWidth, //Page.ActualWidth
50,
0.1,
new Duration(new TimeSpan(TimeSpan.TicksPerSecond)));
}
else {
Animate(
menuPanel,
"Width",
50,
ActualWidth, //Page.ActualWidth
0.1,
new Duration(new TimeSpan(TimeSpan.TicksPerSecond)));
}
menuIsOpen = !menuIsOpen;
};
这是Animate()
的签名:
private void Animate(DependencyObject item, string property, double from, double to, double? by, Duration duration) {
var storyboard = new Storyboard();
var animation = new DoubleAnimation();
animation.From = from;
animation.To = to;
animation.Duration = duration;
animation.EasingFunction = new SineEase() { EasingMode = EasingMode.EaseInOut };
animation.By = by;
Storyboard.SetTarget(animation, item);
Storyboard.SetTargetProperty(animation, property);
storyboard.Children.Add(animation);
storyboard.Begin();
}
我使用了一点Debug.WriteLine()
来查看Storyboard
是否实际正在运行,它是什么。 menuPanel
的宽度根本不会改变。我已经对我的其他一些项目采用了类似的方法,并且在那里工作得很好。
编辑: 我以为我会添加更多细节 我的应用针对的是Windows 10 如果我不使用
menuPanel
和Storyboard
,我可以自由更改DoubleAnimation
的宽度。
答案 0 :(得分:0)
我找到了this answer on a similar question,现在我的动画效果很好。
我自己想通了。我所要做的就是在DoubleAnimation上启用相关动画(EnableDependentAnimation),因为此动画会影响布局。然后它运作得很好。