Получить справочный объект DoubleAnimation из BeginAnimation
Я хочу добавить простую двойную анимацию с выделенным кодом, чтобы применить fadein к n объектам, созданным во время выполнения:
foreach (var rect in howmanyrect) {
Rectangle bbox = new Rectangle {
Width = rect.Width,
Height = rect.Height,
Stroke = Brushes.BlueViolet,
Opacity = 0D
};
DoubleAnimation da = new DoubleAnimation {
From = 0D,
To = 1D,
Duration = TimeSpan.FromMilliseconds(500D),
RepeatBehavior = new RepeatBehavior(1),
AutoReverse = false
};
GridContainer.Children.Add(bbox);
Canvas.SetLeft(bbox, rect.Left);
Canvas.SetTop(bbox, rect.Top);
bbox.Tag = da; // <- Look HERE
bbox.BeginAnimation(OpacityProperty, da);
После этого по запросу удалите коллекцию объектов с помощью fadeout:
foreach (var child in GridContainer.Children) {
Rectangle bbox = (Rectangle) child;
DoubleAnimation da = (DoubleAnimation) bbox.Tag; // <- Look HERE
da.From = 1D;
da.To = 0D;
var childCopy = child; // This copy grants the object reference access for removing inside a forech statement
da.Completed += (obj, arg) => viewerGrid.Children.Remove((UIElement) childCopy);
bbox.BeginAnimation(OpacityProperty, da);
}
Этот код работает отлично, но это обходной путь. В моей первой ревизии я создал новый объект Doubleanimation в методе delete, но когда я запустил анимацию, каждый объект превышает первую и вторую анимацию перед удалением. Поэтому я решил передать ссылку на экземпляр DoubleAnimation со свойством Tag и изменить свойства анимации.
Есть ли другой способ получить ссылку на объект DoubleAnimation, связанный с BeginAnimation, или избежать повторения первой анимации?
Спасибо локс