如何使用消防MVVM双击列表框项的命令?(How to fire a command on doub

2019-09-18 10:24发布

我试图推出一个ICommand当一个列表框项目的用户双击。 另外,我想这个使用MVVM模式做。

在此XAML中,按键“P”完美的作品。 当我双击列表框,命令永远不会发生。 我设置了一个破发点,以确认“PlayVideoCommand”不与双击调用。 我缺少的东西或我使用二传手(这我不熟悉的)?

<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>

无论双击和“p”应执行相同的命令。 当使用鼠标,我可以看到ListBoxItem中被选择。 我有一种预感,在MouseBinding命令属性不是依赖财产,但我不知道如何来证实这一点。

Answer 1:

这是怎么回事你的样品中是列表框本身反应的双击,但只在未覆盖的列表框项目它的区域的一部分。

您需要将事件处理程序被捆绑到ListBoxItem的。

有些方法可以做到这一点的位置: 用鼠标双击列表框项目打开浏览器

而关于为什么一些代码隐藏在MVVM并不一定是一件可怕的事情进行一些讨论: 使用MVVM一个WPF ListView项射击双击事件

更多讨论: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9fb566a2-0bd6-48a7-8db3-312cd3e93340/



Answer 2:

看来,列表框不处理在ListBoxItem中双击。 这是一个很好的答案: 无法绑定命令到列表框控件



文章来源: How to fire a command on double-click listbox item using MVVM?