MouseDown/MouseLeftButtonDown事件不会触发,MouseUp是?

问题描述:

这里是我的代码:MouseDown/MouseLeftButtonDown事件不会触发,MouseUp是?

public AbilitiesController(Abilities page) 
    { 
     _page = page; 
     page.ScrollBar.MouseLeftButtonDown += MouseDown; 
     page.ScrollBar.MouseLeftButtonUp += MouseUp; 
     page.ScrollBar.MouseLeave += MouseLeave; 
     page.ScrollBar.MouseWheel += MouseWheel; 
     page.ScrollBar.MouseMove += MouseMove; 
    } 

    private void MouseMove(object sender, MouseEventArgs mouseEventArgs) 
    { 
     if (!_dragBound) return; 
     var newPos = mouseEventArgs.GetPosition(_page); 
     var dPos = newPos - _pos; 
     _page.ScrollBar.ScrollToHorizontalOffset(dPos.X); 
     _page.ScrollBar.ScrollToVerticalOffset(dPos.Y); 
     _pos = newPos; 
     Console.WriteLine("Moved"); 
    } 

    private void MouseWheel(object sender, MouseWheelEventArgs mouseWheelEventArgs) 
    { 
     Console.WriteLine("MouseWheel"); 
    } 

    private void MouseLeave(object sender, MouseEventArgs mouseEventArgs) 
    { 
     _dragBound = false; 
     Console.WriteLine("Left"); 
    } 

    private void MouseUp(object sender, MouseButtonEventArgs mouseButtonEventArgs) 
    { 
     _dragBound = false; 
     Console.WriteLine("Mouse Up"); 
    } 

    private void MouseDown(object sender, MouseButtonEventArgs mouseButtonEventArgs) 
    { 
     _dragBound = true; 
     Console.WriteLine("Click!"); 
    } 

页是一个网页,滚动条滚动型。

我知道我的移动滚动条的逻辑可能是不正确的,但我们甚至没有得到那么多。

出于某种奇怪的原因,MouseDown事件不会触发是否将其绑定到MouseDown或MouseLeftButtonDown。

但奇怪的是,MouseUp事件没有问题。

这似乎非常奇怪,因为通常如果一个坏了,另一种是太...

在WPF项目中使用最新版本的Visual Studio 2017。

+0

根据这篇文章,它可能已经被ScrollBar类重写了鼠标向下。 http://stackoverflow.com/questions/22813608/wpf-button-mouseleftbuttondown-doesnt-work-at-all –

+0

尝试绑定到page.MouseDown和page.MouseUp,仍然是完全相同的问题。 –

+0

怎么样抛出一个覆盖它。只是一个猜测,但如果它在某些基类中被覆盖,那么它就会起作用。 –

对于所有其他非工作鼠标事件,您可能会尝试使用“PreviewMouseDown”而不是“MouseDown”,因为它们可能已经由“能力”类的基类来处理。

+0

PreviewMouse事件修复了这个问题,谢谢! –