WPF停止ListView ScrollBar触发点击

sip*_*wiz 8 wpf listview scrollbar

我正在使用带有始终可见的垂直滚动条的WPF ListView.我在ListView上有一个MouseLeftButtonUp事件处理程序.处理程序工作正常,除非单击垂直滚动条时没有任何操作,即ListView框没有足够的项目来进行任何滚动.

在这种情况下,当用户点击垂直滚动条只是为了确保屏幕上没有项目时,不会发生任何事情.但是ListView会触发MouseLeftButtonUp事件.如果垂直滚动条确实有一些工作要做,事件不会被触发.

这是我简化的XAML

<ListView MouseLeftButtonUp="DoSomething_MouseLeftButtonUp" SelectionMode="Single" ScrollViewer.VerticalScrollBarVisibility="Visible">
  <ListView.View>
    <GridView>
      <GridViewColumn Width="170" Header="Venue" DisplayMemberBinding="{Binding Path=Venue}" />
    </GridView>
  </ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

无论如何阻止MouseLeftButtonUp事件在单击垂直滚动条时触发,无论滚动条是否有任何工作要做?

Jac*_*ope 8

在我的案例中,由于复杂的样式,其他任何一个答案都没有起作用ListBoxItem.但这确实如此:

var item = ItemsControl.ContainerFromElement(sender as ItemsControl, (DependencyObject)e.OriginalSource) as ListBoxItem;
if (item != null)
{
    // Handle it
}
Run Code Online (Sandbox Code Playgroud)


Cha*_*lie 4

这个问题和这个问题很相似,答案也是一样的。在您的MouseLeftButtonUp处理程序中,检查MouseButtonEventArgs.OriginalSource属性。这会告诉您点击的来源。