Reputation: 241
I have been following some instructions on how to make a label flash. I don't have a lot of experience in animations so I don't know where my problem lies! My code is:
<Window x:Class="WPFAnimationStoryBoard.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFAnimationStoryBoard"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<Storyboard x:Key="blinkAnimation" RepeatBehavior="1" >
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
Storyboard.TargetName="InitProc"
AutoReverse="True">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="Black"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="Black"/>
<DiscreteColorKeyFrame KeyTime="0:0:4" Value="White"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="InitProc"
AutoReverse="True">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="Black"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="Black"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:4" Value="Black"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Label Name="InitProc" Grid.Row="0" Grid.Column="2" Content="{Binding ElementName=myWindow, Path=Hello}" Background="White" Foreground="Black">
<Label.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<EventTrigger.Actions>
<BeginStoryboard>
<StaticResource ResourceKey="blinkAnimation"/>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Label.Triggers>
</Label>
</Grid>
Here is my Code Behind:
namespace WPFAnimationStoryBoard
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
Hello = "hello";
}
private string _hello;
public event PropertyChangedEventHandler PropertyChanged;
public string Hello
{
get { return _hello; }
set
{
_hello = value;
OnPropertyChanged("Hello");
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
}
What am I doing incorrectly? I would appreciate it if, along with an answer, you could supply some of what is happening behind the scenes with animations.
Thank you!!
Edit: I changed to allow the bindings to property update... Dropped the ball on that one. It still does not produce the flashing, but it does show the world "Hello" in the UI.
Upvotes: 2
Views: 305
Reputation: 128116
From the Binding.TargetUpdated Attached Event page on MSDN:
Occurs when a value is transferred from the binding source to the binding target, but only for bindings with the NotifyOnTargetUpdated value set to true.
So your binding should look like this:
Content="{Binding ElementName=myWindow, Path=Hello, NotifyOnTargetUpdated=True}"
Upvotes: 2