Кажется, что это должно быть легко, но я не могу заставить раскадровку WPF остановиться. Я звоню в Pause, и ничего не происходит - он продолжает анимацию.
Вот случай воспроизведения: кнопка, которая анимирует свою ширину. Если вы нажмете кнопку, она вызовет паузу на раскадровке. Я ожидаю, что, как только я нажму кнопку, ее ширина перестанет меняться; вместо этого его ширина продолжает анимацию, как будто я никогда не вызывал Pause.
NameScope.SetNameScope(this, new NameScope());
var storyboard = new Storyboard();
var button = new Button { Content = "Pause", Name = "pause" };
this.Content = button;
RegisterName(button.Name, button);
var animation = new DoubleAnimation(0, 200, TimeSpan.FromSeconds(5));
Storyboard.SetTargetName(animation, button.Name);
Storyboard.SetTargetProperty(animation,
new PropertyPath(FrameworkElement.WidthProperty));
storyboard.Children.Add(animation);
button.Click += (sender, e) => { storyboard.Pause(this); };
storyboard.Begin(this);
Из того, что я понимаю о документах, я должен вызвать перегрузку Pause(FrameworkElement)
с тем же параметром, который я передал Begin
, следовательно, Pause(this)
выше. Но я также попробовал storyboard.Pause()
, без изменений в поведении. Я также попробовал storyboard.Pause(button)
просто так, опять же, без эффекта. Я бы попытался storyboard.Pause(storyboard)
и storyboard.Pause(animation)
просто исчерпать возможности, но ни один из них не компилируется - ему нужен FrameworkElement (или FrameworkContentElement).
Как заставить паузу остановиться?