2010-03-30 7 views
3

J'ai à mon avis quelques Storyboards que j'aimerais déclencher à partir du ViewModel si possible. Y a-t-il un moyen simple ou élégant de le faire? Voici ce que j'essaie de faire. Personne clique sur un bouton -> RelayCommand (Dans le ViewModel), la commande de relais devrait alors lire le storyboard. Encore une chose, je voudrais aussi déclencher l'animation du storyboard par lui-même dans le ViewModel sans aucune interaction.MVVM - Trigger Storyboard dans le modèle de vue dans Silverlight

<i:Interaction.Triggers> 
<i:EventTrigger EventName="MouseLeftButtonDown"> 
    <cmd:EventToCommand Command="{Binding ButtonPress}"              CommandParameterValue="RedButtonLight"> 
    </cmd:EventToCommand> 
     </i:EventTrigger> 
      </i:Interaction.Triggers> 

Répondre

1

Si le bouton clic est uniquement pour alimenter une chose liée vue et ne fait aucune logique d'application réelle, alors je dirais que vous pouvez faire tout cela dans le code-behind de la classe de vue.

Si ce n'est pas le cas, j'utiliserais une propriété sur la présentation (ViewModel) pour signaler que la présentation est dans un état et que la vue réagisse à l'événement PropertyChanged et démarre le storyboard. Cela suppose que vous implémentez INotifyPropertyChanged sur votre classe Presentation.

1

Jetez un coup d'œil au expression samples. Il y a un déclencheur pour les événements du datacontext.

Vous pouvez utiliser cela pour déclencher un ControlStoryboardAction pour démarrer le story-board chaque fois que votre viewmodel déclenche un événement particulier. Votre viewmodel pourrait alors déclencher l'événement dans le cadre de la commande ainsi qu'à d'autres moments.