У меня здесь есть две анимации: одна для закрытия навигационного меню слайдов с сеткой, а другая - для заполнения прямоугольников прозрачным, когда это меню закрывается.Анимация двух UIElements в то же время с использованием WPF C#
Я бы хотел, чтобы они оба произошли в одно и то же время. Сейчас анимации происходят в том порядке, в котором они вызываются.
Как я могу реализовать это как можно проще и чище, используя код C#? Я только создаю это приложение, чтобы узнать об анимациях и различных способах управления макетами.
private void _CloseSlideGrid()
{
DoubleAnimation da = new DoubleAnimation();
da.Duration = TimeSpan.FromSeconds(0.3d);
da.DecelerationRatio = 1.0d;
da.From = 500.0d;
da.To = 0.0d;
_slideGrid.BeginAnimation(Grid.WidthProperty, da);
}
private void _DisableTransparentCover()
{
BrushAnimation ba = new BrushAnimation();
ba.Duration = TimeSpan.FromSeconds(0.3d);
ba.DecelerationRatio = 1.0d;
ba.From = _GetBrush("#77000000");
ba.To = _GetBrush("#00000000");
_tranparentCover.BeginAnimation(Rectangle.FillProperty, ba);
}
Обратный вызов для моей кнопки закрытия вызывает мои две частные функции, которые будут обрабатывать анимации.
private void _NavCloseButton_Click(object sender, RoutedEventArgs e)
{
_CloseSlideGrid();
_DisableTransparentCover();
}
Вот ссылка на альбом Imgur скриншотом из двух состояний моего окна, если вы заинтересуют: http://imgur.com/a/ZaSr1
Позвольте мне знать, если я могу предоставить любую дополнительную информацию,
Спасибо.
Я думаю, что есть некоторые проблемы в реализации 'BrushAnimation'. Я тестировал два «DoubleAnimations» - все работало отлично, а анимация воспроизводилась одновременно. – bars222
Добавьте их в один и тот же раскадровку? –
Как следует из названия 'BeginAnimation', метод запускает анимацию и немедленно возвращается. Вызов BeginAnimation впоследствии для двух разных анимаций заставляет их работать одновременно. Раскадровка не нужна. – Clemens