I have generated a XAML file which contains a scrollviewer with studentnames and a graph. When I click on one of these names, the respective lines will fly in (grow from small to correct size aswell) from the top left and stop at the right position on the axes.
When I click on another name it will trigger the same thing but when these stop at the right position, the former lines fly out of the screen and shrink down through the bottom right.
This all works until I press a name I have already pressed before. These lines then start out small, stay small, and immediately fly out the bottom right, instead of stopping on the axes with its proper size.
I've tried stopping the animation but that doesn't seem to be working, any help would be much appreciated.
private void selectStudent(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
Duration duration = new Duration(new TimeSpan(0, 0, 2));
if (line01 != null)
{
line1Animation1.BeginTime = new TimeSpan(0, 0, 2);
line1Animation1.Duration = duration;
line1Animation1.From = line01.X1;
line1Animation1.To = (line01.X1 * 0.1) + 800;
line1Animation2.BeginTime = new TimeSpan(0, 0, 2);
line1Animation2.Duration = duration;
line1Animation2.From = line01.Y1;
line1Animation2.To = (line01.Y1 * 0.1) + 800;
line1Animation3.BeginTime = new TimeSpan(0, 0, 2);
line1Animation3.Duration = duration;
line1Animation3.From = line01.X2;
line1Animation3.To = (line01.X2 * 0.1) + 800;
line1Animation4.BeginTime = new TimeSpan(0, 0, 2);
line1Animation4.Duration = duration;
line1Animation4.From = line01.Y2;
line1Animation4.To = (line01.Y2 * 0.1) + 800;
storyboard1.Begin();
line2Animation1.BeginTime = new TimeSpan(0, 0, 2);
line2Animation1.Duration = duration;
line2Animation1.From = line02.X1;
line2Animation1.To = (line02.X1 * 0.1) + 800;
line2Animation2.BeginTime = new TimeSpan(0, 0, 2);
line2Animation2.Duration = duration;
line2Animation2.From = line02.Y1;
line2Animation2.To = (line02.Y1 * 0.1) + 800;
line2Animation3.BeginTime = new TimeSpan(0, 0, 2);
line2Animation3.Duration = duration;
line2Animation3.From = line02.X2;
line2Animation3.To = (line02.X2 * 0.1) + 800;
line2Animation4.BeginTime = new TimeSpan(0, 0, 2);
line2Animation4.Duration = duration;
line2Animation4.From = line02.Y2;
line2Animation4.To = (line02.Y2 * 0.1) + 800;
storyboard2.Begin();
line3Animation1.BeginTime = new TimeSpan(0, 0, 2);
line3Animation1.Duration = duration;
line3Animation1.From = line03.X1;
line3Animation1.To = (line03.X1 * 0.1) + 800;
line3Animation2.BeginTime = new TimeSpan(0, 0, 2);
line3Animation2.Duration = duration;
line3Animation2.From = line03.Y1;
line3Animation2.To = (line03.Y1 * 0.1) + 800;
line3Animation3.BeginTime = new TimeSpan(0, 0, 2);
line3Animation3.Duration = duration;
line3Animation3.From = line03.X2;
line3Animation3.To = (line03.X2 * 0.1) + 800;
line3Animation4.BeginTime = new TimeSpan(0, 0, 2);
line3Animation4.Duration = duration;
line3Animation4.From = line03.Y2;
line3Animation4.To = (line03.Y2 * 0.1) + 800;
storyboard3.Begin();
line4Animation1.BeginTime = new TimeSpan(0, 0, 2);
line4Animation1.Duration = duration;
line4Animation1.From = line04.X1;
line4Animation1.To = (line04.X1 * 0.1) + 800;
line4Animation2.BeginTime = new TimeSpan(0, 0, 2);
line4Animation2.Duration = duration;
line4Animation2.From = line04.Y1;
line4Animation2.To = (line04.Y1 * 0.1) + 800;
line4Animation3.BeginTime = new TimeSpan(0, 0, 2);
line4Animation3.Duration = duration;
line4Animation3.From = line04.X2;
line4Animation3.To = (line04.X2 * 0.1) + 800;
line4Animation4.BeginTime = new TimeSpan(0, 0, 2);
line4Animation4.Duration = duration;
line4Animation4.From = line04.Y2;
line4Animation4.To = (line04.Y2 * 0.1) + 800;
storyboard4.Begin();
titleActive.Visibility = Visibility.Collapsed;
}
line01 = (Line)FindName(((Border)sender).Name + "_Line_1");
storyboard1 = (Storyboard)FindName(line01.Name + "_StoryboardLine");
line1Animation1String = line01.Name + "_lineAnimation1";
line1Animation1 = (DoubleAnimation)FindName(line1Animation1String);
line1Animation2String = line01.Name + "_lineAnimation2";
line1Animation2 = (DoubleAnimation)FindName(line1Animation2String);
line1Animation3String = line01.Name + "_lineAnimation3";
line1Animation3 = (DoubleAnimation)FindName(line1Animation3String);
line1Animation4String = line01.Name + "_lineAnimation4";
line1Animation4 = (DoubleAnimation)FindName(line1Animation4String);
line02 = (Line)FindName(((Border)sender).Name + "_Line_2");
storyboard2 = (Storyboard)FindName(line02.Name + "_StoryboardLine");
line2Animation1String = line02.Name + "_lineAnimation1";
line2Animation1 = (DoubleAnimation)FindName(line2Animation1String);
line2Animation2String = line02.Name + "_lineAnimation2";
line2Animation2 = (DoubleAnimation)FindName(line2Animation2String);
line2Animation3String = line02.Name + "_lineAnimation3";
line2Animation3 = (DoubleAnimation)FindName(line2Animation3String);
line2Animation4String = line02.Name + "_lineAnimation4";
line2Animation4 = (DoubleAnimation)FindName(line2Animation4String);
line03 = (Line)FindName(((Border)sender).Name + "_Line_3");
storyboard3 = (Storyboard)FindName(line03.Name + "_StoryboardLine");
line3Animation1String = line03.Name + "_lineAnimation1";
line3Animation1 = (DoubleAnimation)FindName(line3Animation1String);
line3Animation2String = line03.Name + "_lineAnimation2";
line3Animation2 = (DoubleAnimation)FindName(line3Animation2String);
line3Animation3String = line03.Name + "_lineAnimation3";
line3Animation3 = (DoubleAnimation)FindName(line3Animation3String);
line3Animation4String = line03.Name + "_lineAnimation4";
line3Animation4 = (DoubleAnimation)FindName(line3Animation4String);
line04 = (Line)FindName(((Border)sender).Name + "_Line_4");
storyboard4 = (Storyboard)FindName(line04.Name + "_StoryboardLine");
line4Animation1String = line04.Name + "_lineAnimation1";
line4Animation1 = (DoubleAnimation)FindName(line4Animation1String);
line4Animation2String = line04.Name + "_lineAnimation2";
line4Animation2 = (DoubleAnimation)FindName(line4Animation2String);
line4Animation3String = line04.Name + "_lineAnimation3";
line4Animation3 = (DoubleAnimation)FindName(line4Animation3String);
line4Animation4String = line04.Name + "_lineAnimation4";
line4Animation4 = (DoubleAnimation)FindName(line4Animation4String);
titleActive = (TextBlock)FindName(((Border)sender).Name + "_Title");
line1Animation1.Duration = duration;
line1Animation1.From = (line01.X1 - 250) * 0.1;
line1Animation1.To = line01.X1;
line1Animation2.Duration = duration;
line1Animation2.From = (line01.Y1 - 250) * 0.1;
line1Animation2.To = line01.Y1;
line1Animation3.Duration = duration;
line1Animation3.From = (line01.X2 - 250) * 0.1;
line1Animation3.To = line01.X2;
line1Animation4.Duration = duration;
line1Animation4.From = (line01.Y2 - 250) * 0.1;
line1Animation4.To = line01.Y2;
storyboard1.Begin();
line2Animation1.Duration = duration;
line2Animation1.From = (line02.X1 - 250) * 0.1;
line2Animation1.To = line02.X1;
line2Animation2.Duration = duration;
line2Animation2.From = (line02.Y1 - 250) * 0.1;
line2Animation2.To = line02.Y1;
line2Animation3.Duration = duration;
line2Animation3.From = (line02.X2 - 250) * 0.1;
line2Animation3.To = line02.X2;
line2Animation4.Duration = duration;
line2Animation4.From = (line02.Y2 - 250) * 0.1;
line2Animation4.To = line02.Y2;
storyboard2.Begin();
line3Animation1.Duration = duration;
line3Animation1.From = (line03.X1 - 250) * 0.1;
line3Animation1.To = line03.X1;
line3Animation2.Duration = duration;
line3Animation2.From = (line03.Y1 - 250) * 0.1;
line3Animation2.To = line03.Y1;
line3Animation3.Duration = duration;
line3Animation3.From = (line03.X2 - 250) * 0.1;
line3Animation3.To = line03.X2;
line3Animation4.Duration = duration;
line3Animation4.From = (line03.Y2 - 250) * 0.1;
line3Animation4.To = line03.Y2;
storyboard3.Begin();
line4Animation1.Duration = duration;
line4Animation1.From = (line04.X1 - 250) * 0.1;
line4Animation1.To = line04.X1;
line4Animation2.Duration = duration;
line4Animation2.From = (line04.Y1 - 250) * 0.1;
line4Animation2.To = line04.Y1;
line4Animation3.Duration = duration;
line4Animation3.From = (line04.X2 - 250) * 0.1;
line4Animation3.To = line04.X2;
line4Animation4.Duration = duration;
line4Animation4.From = (line04.Y2 - 250) * 0.1;
line4Animation4.To = line04.Y2;
storyboard4.Begin();
line01.Visibility = Visibility.Visible;
line02.Visibility = Visibility.Visible;
line03.Visibility = Visibility.Visible;
line04.Visibility = Visibility.Visible;
titleActive.Visibility = Visibility.Visible;
}
}
XAML: (lines from 1 person, couldn't fit whole file)
<Line Stroke="Darkgreen" StrokeThickness="2" X1="212.97500000000002" X2="350.0" Y1="350.0" Y2="190.53124999999997" x:Name="Marilyn_Williamson_Line_1" Visibility="Collapsed">
<Line.Triggers>
<EventTrigger>
<BeginStoryboard>
<Storyboard x:Name="Marilyn_Williamson_Line_1_StoryboardLine">
<DoubleAnimation x:Name="Marilyn_Williamson_Line_1_lineAnimation1" Storyboard.TargetName="Marilyn_Williamson_Line_1" Storyboard.TargetProperty="X1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_1_lineAnimation2" Storyboard.TargetName="Marilyn_Williamson_Line_1" Storyboard.TargetProperty="Y1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_1_lineAnimation3" Storyboard.TargetName="Marilyn_Williamson_Line_1" Storyboard.TargetProperty="X2" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_1_lineAnimation4" Storyboard.TargetName="Marilyn_Williamson_Line_1" Storyboard.TargetProperty="Y2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Line.Triggers>
</Line>
<Line Stroke="Darkgreen" StrokeThickness="2" X1="509.86249999999995" X2="350.0" Y1="350.0" Y2="190.53124999999997" x:Name="Marilyn_Williamson_Line_2" Visibility="Collapsed">
<Line.Triggers>
<EventTrigger>
<BeginStoryboard>
<Storyboard x:Name="Marilyn_Williamson_Line_2_StoryboardLine">
<DoubleAnimation x:Name="Marilyn_Williamson_Line_2_lineAnimation1" Storyboard.TargetName="Marilyn_Williamson_Line_2" Storyboard.TargetProperty="X1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_2_lineAnimation2" Storyboard.TargetName="Marilyn_Williamson_Line_2" Storyboard.TargetProperty="Y1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_2_lineAnimation3" Storyboard.TargetName="Marilyn_Williamson_Line_2" Storyboard.TargetProperty="X2" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_2_lineAnimation4" Storyboard.TargetName="Marilyn_Williamson_Line_2" Storyboard.TargetProperty="Y2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Line.Triggers>
</Line>
<Line Stroke="Darkgreen" StrokeThickness="2" X1="350.0" X2="212.97500000000002" Y1="487.025" Y2="350.0" x:Name="Marilyn_Williamson_Line_3" Visibility="Collapsed">
<Line.Triggers>
<EventTrigger>
<BeginStoryboard>
<Storyboard x:Name="Marilyn_Williamson_Line_3_StoryboardLine">
<DoubleAnimation x:Name="Marilyn_Williamson_Line_3_lineAnimation1" Storyboard.TargetName="Marilyn_Williamson_Line_3" Storyboard.TargetProperty="X1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_3_lineAnimation2" Storyboard.TargetName="Marilyn_Williamson_Line_3" Storyboard.TargetProperty="Y1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_3_lineAnimation3" Storyboard.TargetName="Marilyn_Williamson_Line_3" Storyboard.TargetProperty="X2" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_3_lineAnimation4" Storyboard.TargetName="Marilyn_Williamson_Line_3" Storyboard.TargetProperty="Y2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Line.Triggers>
</Line>
<Line Stroke="Darkgreen" StrokeThickness="2" X1="509.86249999999995" X2="350.0" Y1="350.0" Y2="487.025" x:Name="Marilyn_Williamson_Line_4" Visibility="Collapsed">
<Line.Triggers>
<EventTrigger>
<BeginStoryboard>
<Storyboard x:Name="Marilyn_Williamson_Line_4_StoryboardLine">
<DoubleAnimation x:Name="Marilyn_Williamson_Line_4_lineAnimation1" Storyboard.TargetName="Marilyn_Williamson_Line_4" Storyboard.TargetProperty="X1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_4_lineAnimation2" Storyboard.TargetName="Marilyn_Williamson_Line_4" Storyboard.TargetProperty="Y1" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_4_lineAnimation3" Storyboard.TargetName="Marilyn_Williamson_Line_4" Storyboard.TargetProperty="X2" />
<DoubleAnimation x:Name="Marilyn_Williamson_Line_4_lineAnimation4" Storyboard.TargetName="Marilyn_Williamson_Line_4" Storyboard.TargetProperty="Y2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Line.Triggers>
</Line>
1 - Use completed event to stop or remove storyboards like this:
<Storyboard Completed="storyboard_Completed" x:Name="Marilyn_Williamson_Line_1_StoryboardLine">
and in code behind :
private void storyboard_Completed(object sender, EventArgs e)
{
string StoryBoardName = ((ClockGroup)sender).Timeline.Name;
if (StoryBoardName == "storyboard1") { storyboard1.Stop(); storyboard1.Remove(); }
}
2 - Put storyboard.Stop();
before each storyboard.Begin();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.