Я пытался заставить это работать, основываясь на ответе, который я получил на [Конвертировать некоторые XAML в C # с помощью WPF] [1] , но я что-то упустил.
Я вставил образец моего кода ниже.
// uGrid = UniformGrid
uGrid.Columns=2;
// test - setup first ellipse
Ellipse ellipse1 = new Ellipse() { Width=25, Height=25, Fill=Brushes.DodgerBlue, Margin= new Thickness(3), Opacity=0 };
uGrid.Children.Add(ellipse1);
var fadeEllipse1 = new DoubleAnimation() { From = 0, To = 1, Duration = TimeSpan.FromSeconds(this.secondsToFade), FillBehavior=FillBehavior.Stop };
Storyboard.SetTarget(fadeEllipse1, ellipse1);
Storyboard.SetTargetProperty(fadeEllipse1, new PropertyPath(Ellipse.OpacityProperty));
Storyboard storyBoard = new Storyboard();
storyBoard.Children.Add(fadeEllipse1);
storyBoard.RepeatBehavior=RepeatBehavior.Forever;
// test - setup 2nd ellipse using example below
Ellipse ellipse2 = new Ellipse() { Width=25, Height=25, Fill=Brushes.DodgerBlue, Margin= new Thickness(3), Opacity=0 };
uGrid.Children.Add(ellipse2);
var style = new Style(typeof(Ellipse));
var trigger = new DataTrigger();
trigger.Binding = new Binding("Opacity") { ElementName = "ellipse1" };
trigger.Value = 1;
Storyboard sb = new Storyboard();
var fadeEllipse2 = new DoubleAnimation() { From = 0, To = 1, Duration = TimeSpan.FromSeconds(this.secondsToFade), FillBehavior=FillBehavior.Stop };
Storyboard.SetTarget(fadeEllipse2, ellipse2);
Storyboard.SetTargetProperty(fadeEllipse2, new PropertyPath(Ellipse.OpacityProperty));
Storyboard.SetTargetName(fadeEllipse2, ellipse2.Name);
sb.Children.Add(fadeEllipse2);
sb.RepeatBehavior=RepeatBehavior.Forever;
trigger.EnterActions.Add(new BeginStoryboard() { Storyboard = sb });
style.Triggers.Add(trigger);
storyBoard.Begin();