Comment déclencher une commande sur double-cliquez sur liste de l'élément en utilisant MVVM?
Je suis en train de lancer une ICommand lorsque l'utilisateur double-clique sur une zone de liste de l'élément. Aussi, je suis en train de faire cela en utilisant le pattern MVVM.
Dans le XAML, la pression sur la touche "p" fonctionne parfaitement. Quand je double-cliquez sur la zone de liste, la commande ne démarre jamais. J'ai mis un point d'arrêt pour confirmer "PlayVideoCommand" n'est pas appelé avec un double-clic. Ai-je raté quelque chose ou dois-je utiliser Setter (dont je ne suis pas familier avec)?
<ListBox Name="SmallVideoPreviews" Grid.Column="1" MaxHeight="965"
ItemsSource="{Binding BrowseVideos}"
ItemTemplate="{StaticResource BrowseTemplate}">
<ListBox.InputBindings>
<KeyBinding Key="p"
Command="{Binding PlayVideoCommand}"
CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/>
<MouseBinding Gesture="LeftDoubleClick"
Command="{Binding PlayVideoCommand}"
CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/>
</ListBox.InputBindings>
</ListBox>
Les deux double-cliquez sur "p" doit exécuter la même commande. Lors de l'utilisation de la souris, je peux voir le listboxitem est sélectionné. J'ai l'intuition que l'MouseBinding de Commande de la propriété n'est pas une propriété de dépendance, mais je ne sais pas comment faire pour le confirmer.
OriginalL'auteur James | 2012-06-23
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe dans votre exemple, c'est que la liste elle-même réagit à la double clic, mais seulement dans la partie de la zone n'est pas couverte par un élément de zone de liste.
Vous avez besoin du gestionnaire d'événement lié à la listboxitem.
Certaines façons de faire sont ici:
Double-Cliquez sur une zone de liste le point d'ouvrir un navigateur
Et une discussion sur les raisons d'un peu de code-behind en MVVM n'est pas nécessairement une chose terrible:
Le tir d'une double cliquez sur l'événement à partir d'un WPF élément de liste en utilisant MVVM
Plus de discussion:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9fb566a2-0bd6-48a7-8db3-312cd3e93340/
OriginalL'auteur Japple
Il semble que la zone de liste n'a pas de poignée double-cliquez sur un ListBoxItem. C'est une bonne réponse:
Ne peut pas se lier Commande ListBox
OriginalL'auteur MBen