Jam*_*mes 8 c# wpf dependency-properties mvvm
当用户双击列表框项目时,我正在尝试启动ICommand.此外,我正在尝试使用MVVM模式.
在这个XAML中,按键"p"完美地工作.当我双击列表框时,命令永远不会启动.我设置了一个断点来确认没有通过双击调用"PlayVideoCommand".我错过了什么或者我是否必须使用Setter(我不熟悉)?
<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>
Run Code Online (Sandbox Code Playgroud)
双击和"p"都应该执行相同的命令.使用鼠标时,我可以看到listboxitem已被选中.我有一个预感,MouseBinding Command属性不是依赖属性,但我不知道如何确认这一点.
Jap*_*ple 11
您的示例中发生的事情是列表框本身对双击做出反应,但仅限于列表框项未涵盖的部分区域.
您需要将事件处理程序绑定到listboxitem.
有一些方法可以执行此操作: 双击ListBox项以打开浏览器
关于为什么MVVM中的一点代码隐藏不一定是一件可怕的事情的一些讨论: 使用MVVM从WPF ListView项目中点击双击事件
更多讨论:http: //social.msdn.microsoft.com/Forums/en-US/wpf/thread/9fb566a2-0bd6-48a7-8db3-312cd3e93340/
| 归档时间: |
|
| 查看次数: |
32937 次 |
| 最近记录: |