2010-11-06 3 views
0

J'ai des données liées à un ListBox dans mon application MVVM Light Windows Phone 7, et je veux invoquer une commande dans mon modèle de vue lorsque l'utilisateur clique sur un élément de mon ListBox.Mvvm Light ListBox MouseButtonLeftDown et EventToCommand - comment passer l'élément cliqué

Je fais cela en utilisant le comportement de EventToCommand et tout est bon, sauf que je ne peux pas passer l'élément de données associé à l'élément de la liste qui a été cliqué, si j'utilise l'événement MouseLeftButtonDown ...

Si j'utilise l'événement SelectionChanged, je peux lier le CommandParameter du comportement à SelectedItem de la ListBox, mais je souhaite vraiment utiliser l'événement MouseLeftButtonDown.

Des idées? Je préférerais ne pas polluer mon modèle View en définissant l'option "PassEventArgsToCommand" et, dans tous les cas, je ne suis pas sûr de pouvoir obtenir l'élément de données sélectionné à partir de MouseButtonEventArgs.

Actuellement, je suis en train de configurer un gestionnaire d'événements dans le code-behind, et d'appeler le ViewModel à partir de là, en utilisant "l'expéditeur" pour obtenir l'élément de données.

Merci,

Damian 

Répondre

0

Il semble que la question n'a pas fait réellement sens - l'événement MouseLeftButtonDown étant tiré sur la zone de liste n'est pas associé à un élément particulier dans la zone de liste. Au lieu de cela, je cherche à raccorder cet événement sur le ItemTemplate que j'ai associé à la ListBox.

0

Jesse Liberté donne un bon exemple: Passing Parameters...

Mais si vous utilisez Windows Phone 7.5 vous devez changer une chose, ce qui est vous ne pouvez pas utiliser la syntaxe Galasoft EventToCommand plus, comme le montre ici dans cet exemple :

<i:Interaction.Triggers> 
<i:EventTrigger EventName="SelectionChanged"> 
    <!--<GalaSoft_MvvmLight_Command:EventToCommand x:Name="SelectionCommand" Command="{Binding SwitchProfileCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem, ElementName=lboxProfiles}"/>--> 

    <i:InvokeCommandAction Command="{Binding SwitchProfileCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem, ElementName=lboxProfiles}" /> 

</i:EventTrigger> 

en outre, pour Windows Phone 7.5, consultez http://windowsphonegeek.com/articles/ListBox-ContextMenu-with-MVVM-in-Windows-Phone pour l'aide d'une commande avec un menu contextuel lié à chaque élément.

Questions connexes