Ähnlich dem obigen Poster, habe ich auch einen DataTrigger verwendet und dann an eine Eigenschaft in meinem ViewModel gebunden. Die eine Sache, die ich verwirrend fand, war, wo ich den Datentrigger platzieren sollte. Ich lege es direkt in den Wurzelknoten (d. H. Fenster). Ich habe es mit Expression Blend erstellt, das sich um die Namensgebung der Tags für mich gekümmert hat.
Vergewissern Sie sich auch in Ihrem Projekt einen Verweis auf "Microsoft.Expression.Interactions"
XAML: (dies geht direkt in den Wurzelknoten)
<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>
Ansichtsmodell:
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));
}
}
Schließlich muss das Viewmodel von "INotifyPropertyChanged"
erben, wird dies sogar funktionieren Wenn alle Werte gesetzt sind, wenn die Listbox das Objekt erhält? – Peter
Ich glaube, das Storyboard würde ausgelöst werden, wenn das Objekt erfasst wird. Probieren Sie es aus und sehen Sie. –
Wo in der Xaml fügen wir das hinzu? – swinefeaster