WPF ListBox没有DoubleClick事件,至少没有我能说的那么多.是否有针对此问题的解决方法,让我双击项目以让事件处理程序对其执行某些操作?谢谢你的帮助.
事实证明,ListBox有一个MouseDoubleClick事件.我将此事件添加到我的ListBox并让事件处理程序处理我的任务,将所选项目复制到另一个ListBox.所以,现在每当我双击某个项目时,它就会被复制.
可以将带有参数的命令绑定到ListBoxItem
s而不使用代码隐藏或附加行为,只需使用InputBindings
a MouseBinding
,如本答案中所示.
例如ListBox
与MouseBinding
为LeftDoubleClick
:
如果该命令是在相同的DataContext作为限定ItemsSource
的ListBox
,它可以通过使用结合RelativeSource
作为包括在例如结合.
如果您正在使用数据绑定,那么这个问题很容易解决
然后在你的代码后面,检查双击如下
private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ClickCount>=2) { .... } }
如果在双击之前未选中双击项目,则在事件处理程序中不会显示它.您在该处理程序中的逻辑需要记住这一点
您始终可以覆盖ListItem控件模板并处理模板内的双击事件,例如在包含ListBox的常规内容的不可见边框中.
本文介绍如何将ControlTemplate与ListBoxItem一起使用.除此之外,只需将处理程序添加到控件模板的最外层元素即可.
如果您有Expression Blend,则可以使用它来提取现有的控件模板以供您修改,这样您就不必做太多工作来确保新列表框的行为与旧列表框相同.