我正在尝试为我的应用程序制作自定义汉堡菜单。我已经设置了所有布局,但是由于某种原因,我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,如果我不使用s 和s,我
可以自由更改宽度。menuPanel
Storyboard
DoubleAnimation