【发布时间】:2010-08-24 07:45:33
【问题描述】:
我想在列表视图左键单击空白区域时捕捉事件 - 即单击列表视图控件中的任何项目。
我在列表视图的事件列表中进行了搜索,但没有找到。我怎样才能做到这一点? 请帮忙!
[编辑] 如果我能捕捉到这个事件,我想做什么:取消选择列表视图中的所有项目。
【问题讨论】:
标签: wpf listview event-handling
我想在列表视图左键单击空白区域时捕捉事件 - 即单击列表视图控件中的任何项目。
我在列表视图的事件列表中进行了搜索,但没有找到。我怎样才能做到这一点? 请帮忙!
[编辑] 如果我能捕捉到这个事件,我想做什么:取消选择列表视图中的所有项目。
【问题讨论】:
标签: wpf listview event-handling
如果您将处理程序附加到 ListView 上的 MouseLeftButtonDown 事件,它只会在单击 ListViewItem 之外的区域时触发。项目内的任何点击都将由项目本身处理,以驱动 ListView 的选择行为。
您可以通过在 ListView 上设置 ItemContainerStyle 来调整背景({x:Null} 不可点击,其他任何内容)和 ListViewItems 的边距来更改可点击区域。还要确保您没有在 ListView 本身上使用空背景(白色是默认设置,透明也可以)。
【讨论】:
ListBoxItem 控件处理 ListBox 上的点击。您应该:
PreviewMouseDown 事件myListBox.AddHandler方法在代码中添加事件处理程序有关说明和代码示例,请参阅 How to Attach to MouseDown Event on ListBox。
【讨论】:
我发现如果我之前单击了列表视图中的一个项目(并因此选择了它),然后双击列表视图中的空白区域,则会导致先前选择的项目被执行,就好像它有被双击(而不是空白)。为了解决这个问题,我使用了以下代码(vb.net):
Private Sub ListView1_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles ListView1.MouseLeftButtonDown
ListView1.SelectedIndex = -1
End Sub
使用此代码,双击空白区域会取消选择任何先前选择的项目,并具有预期的效果,即当用户双击空白区域时,不会发生任何事情。
【讨论】: