单击空白区域时如何处理事件?

时间:2010-08-24 07:45:34

标签: wpf listview event-handling

我想在空白区域左键单击列表视图时捕获事件 - 即单击列表视图控件中的任何项目。

我在listview的事件列表中搜索但没有找到。我怎样才能做到这一点? 请帮忙!

[编辑] 如果我能抓住这个事件,我想做什么:取消选择列表视图中的所有项目。

3 个答案:

答案 0 :(得分:5)

如果将处理程序附加到ListView上的MouseLeftButtonDown事件,则只有在单击ListViewItem外部的区域时才会触发。项目内的任何点击都将由项目本身处理,以驱动ListView的选择行为。

您可以通过在ListView上设置ItemContainerStyle来调整背景({x:Null}不可点击,其他任何东西)和ListViewItems的边距来更改可点击区域。另外请确保您没有在ListView本身上使用空背景(白色是默认设置,透明也可以。)

答案 1 :(得分:0)

ListBoxItem控件处理ListBox上的点击。你应该:

  • 在ListBox上使用PreviewMouseDown事件
  • 通过myListBox.AddHandler方法
  • 在代码中添加事件处理程序

有关说明和代码示例,请参阅 How to Attach to MouseDown Event on ListBox

答案 2 :(得分:0)

我发现如果我之前单击了listview中的某个项目(从而选择了它),那么接下来双击listview中的空白区域会导致先前选择的项目被操作的不良结果,就像它有双击(而不是空格)。为了解决这个问题,我使用了以下代码(vb.net):

Private Sub ListView1_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles ListView1.MouseLeftButtonDown

    ListView1.SelectedIndex = -1

End Sub

使用此代码双击空白空间取消选择任何先前选择的项目,并且当用户双击空白区域时,具有所需的效果。