Wie Feuer einen Befehl bei Doppelklick auf listbox-Element mit MVVM?
Ich versuche zu starten, wird ein ICommand, wenn der Benutzer einen Doppelklick auf eine listbox-Element. Auch ich bin versucht, dies zu tun mit dem MVVM-Muster.
In dieser XAML-Code, die Taste "p" funktioniert tadellos. Wenn ich Doppelklick auf das Listenfeld den Befehl nie beginnt. Ich habe einen Haltepunkt, um zu bestätigen "PlayVideoCommand" ist nicht " mit einem Doppelklick. Bin ich etwas fehlt, oder muss ich von der Verwendung von Setter (die ich nicht kenne)?
<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>
Beide Doppel-klicken und "p" führen Sie den gleichen Befehl. Wenn du mit der Maus kann ich sehen, das listboxitem ausgewählt ist. Ich habe eine Ahnung, dass der MouseBinding Command-Eigenschaft ist nicht eine Abhängigkeitseigenschaft, aber ich weiß nicht, wie dies zu bestätigen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was passiert in deinem Beispiel ist, dass die listbox selbst ist die Reaktion auf den Doppelklick, aber nur in dem Teil der Fläche, die nicht bedeckt von einer Liste box item.
Benötigen Sie den event-handler gebunden werden, um die listboxitem.
Einige Möglichkeiten, es zu tun sind hier:
Doppelklicken Sie Auf einen ListBox-Element, um einen browser zu öffnen
Und einige Diskussion darüber, warum ein kleiner code-behind in MVVM ist nicht unbedingt eine schreckliche Sache:
Brennen einer double-click-Ereignis aus einer WPF-ListView-Element mit MVVM
Mehr Diskussion:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9fb566a2-0bd6-48a7-8db3-312cd3e93340/
Scheint es, dass die ListBox nicht handhaben doppelklicken Sie auf ein ListBoxItem. Dies ist eine gute Antwort:
Nicht bind-Befehl um ListBox