0

我正在尝试为我的应用程序制作自定义汉堡菜单。我已经设置了所有布局,但是由于某种原因,我DoubleAnimation的工作并没有像我预期的那样工作。我正在尝试在 Windows 10 上完成类似于 Cortana 的汉堡菜单的操作。我正在我的代码中创建StoryboardDoubleAnimation(即使我的动画是在 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,我
可以自由更改宽度。menuPanelStoryboardDoubleAnimation

4

1 回答 1

0

在一个类似的问题上找到了这个答案,我的动画现在工作得很好。

我自己想通了。我所要做的就是在 DoubleAnimation 上启用依赖动画 (EnableDependentAnimation),因为此动画会影响布局。然后它完美地工作了。

于 2015-10-07T12:44:31.087 回答