【发布时间】:2013-12-02 20:15:29
【问题描述】:
有什么方法可以检查双击是否发生在 WPF ListView 的 GridView 区域内?如果我们使用listview鼠标双击事件,在listview的滚动条上双击也会触发鼠标双击事件。
我正在寻找一种方法来识别鼠标双击是否仅在列表视图项目的顶部?
【问题讨论】:
有什么方法可以检查双击是否发生在 WPF ListView 的 GridView 区域内?如果我们使用listview鼠标双击事件,在listview的滚动条上双击也会触发鼠标双击事件。
我正在寻找一种方法来识别鼠标双击是否仅在列表视图项目的顶部?
【问题讨论】:
您可以使用SystemParameters.HorizontalScrollBarHeight 和SystemParameters.VerticalScrollBarWidth 属性来帮助您解决此问题。下面是检测垂直ScrollBar是否被使用的例子:
double mouseXPositionInListView = Mouse.GetPosition(yourListView).X;
if (mouseXPositionInListView > yourListView.ActualWidth -
SystemParameters.VerticalScrollBarWidth - yourListView.Padding.Right)
{
// The user is scrolling vertically
}
更新>>>
如果你想忽略GridView列标题区域的点击,那么只需调整上面的代码以包含标题的Height。您可以使用GridViewColumnHeader.Height 属性获取标头的Height。请注意,这不是像上一个那样的 static 属性,因此您必须从您的 GridView 获取它。
【讨论】: