我正在使用一个带有始终可见垂直滚动条的WPF ListView。我在ListView上有一个MouseLeftButtonUp事件处理程序。该处理程序正常工作,但当垂直滚动条被点击时却没有任何操作,即ListView框中没有足够的项目进行任何滚动时,会出现问题。
在这种情况下,由于用户只是为了确保没有项目刚好在屏幕外而单击了垂直滚动条,因此不应发生任何事情。然而,ListView触发了MouseLeftButtonUp事件。如果垂直滚动条确实有一些工作要做,则不会触发该事件。
以下是我简化后的XAML。
在这种情况下,由于用户只是为了确保没有项目刚好在屏幕外而单击了垂直滚动条,因此不应发生任何事情。然而,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>
无论滚动条是否有工作需要执行,都有没有办法阻止鼠标左键松开事件在垂直滚动条被单击时触发吗?
PassEventArgsToCommand="True"
,上面的解决方案也适用,您只需要将sender替换为e.Source
(其中e是RoutedEventArgs)。 - Sebastien Servouze