<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="QWERTY.animation"
x:Name="Window"
Title="animation"
Width="640" Height="480">
<Window.Resources>
<Storyboard x:Key="Animation">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.FontSize)" Storyboard.TargetName="btn_1">
<EasingDoubleKeyFrame KeyTime="0" Value="11"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="10.667"/>
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.FontWeight)" Storyboard.TargetName="btn_1">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<FontWeight>Normal</FontWeight>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
<DiscreteObjectKeyFrame KeyTime="0:0:0.3">
<DiscreteObjectKeyFrame.Value>
<FontWeight>Bold</FontWeight>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="btn_1">
<EasingColorKeyFrame KeyTime="0" Value="#FFEAF0ED"/>
<EasingColorKeyFrame KeyTime="0:0:0.3" Value="#FF106285"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Button x:Name="btn_2" Content="B" Height="55" Margin="236,98,0,0" VerticalAlignment="Top" Click="btn_2_Click" HorizontalAlignment="Left" Width="72" />
<Button x:Name="btn_1" Content="A" Height="55" Margin="115,98,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="72" Click="btn_1_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="#FFEAF0ED" Offset="0.9"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="Remove" HorizontalAlignment="Left" Margin="173,179,0,217" Width="75" Click="Button_Click" />
</Grid>
The design will be like below
public partial class animation : Window
{
Storyboard SB;
public animation()
{
this.InitializeComponent();
}
public void Animate(string name)
{
SB = (Storyboard)(FindResource("Animation"));
Storyboard.SetTargetName(SB.Children[0], name);
Storyboard.SetTargetName(SB.Children[1], name);
Storyboard.SetTargetName(SB.Children[2], name);
SB.Begin();
}
private void btn_1_Click(object sender, RoutedEventArgs e)
{
Button Btn_1 = (Button)sender;
Animate(btn_1.Name);
}
private void btn_2_Click(object sender, RoutedEventArgs e)
{
Button Btn_2 = (Button)sender;
Animate(Btn_2.Name);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SB.Remove();
}
}
出力は以下のようになります
上記の結果は、2つのボタンを1つずつクリックした後、削除ボタンをクリックした後、ボタンBのアニメーションのみが削除された結果です。しかし、削除ボタンをクリックして、ボタンAとボタンBのアニメーションを削除したいと思い ます。