De même que pour l'affiche ci-dessus, j'ai également utilisé un DataTrigger, puis je l'ai lié à une propriété dans mon ViewModel. La seule chose que j'ai trouvée confuse était où mettre le déclencheur de données. Je l'ai mis directement dans le nœud racine (c'est-à-dire la fenêtre). Je l'ai créé en utilisant Expression Blend qui a pris soin des détails de nommage de balise pour moi.
Assurez-vous aussi d'inclure dans votre projet une référence à "Microsoft.Expression.Interactions"
XAML: (cela va directement dans le nœud racine)
<Window
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Name="window" >
...
<i:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding FlashingBackground, Mode=OneWay}" Value="ON">
<ei:ControlStoryboardAction Storyboard="{StaticResource MyAnimation}"
ControlStoryboardOption="Play"/>
</ei:DataTrigger>
</i:Interaction.Triggers>
...
</Window>
ViewModel:
private void TurnOnFlashingBackround()
{
FlashingBackground = "ON";
}
private string _FlashingBackround = "OFF";
public string FlashingBackground
{
get { return _FlashingBackround; }
private set
{
if (FlashingBackground == value)
{
return;
}
_FlashingBackround = value;
this.OnPropertyChanged("FlashingBackground");
}
}
public new event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Enfin, le viewmodel doit hériter de « INotifyPropertyChanged »
cela fonctionnera même si toutes les valeurs sont définies lorsque la listbox obtient l'objet? – Peter
Je crois que le storyboard serait tiré lorsque l'objet est acquis. Essayez-le et voyez. –
Où dans le xaml ajoutons-nous ceci? – swinefeaster