MouseDown / MouseLeftButtonDown 事件不触发,而 MouseUp 触发了?

3
这是我的代码:
    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的最新版本。


根据这篇文章,很可能鼠标按下事件已经被ScrollBar类覆盖了。 - chris-crush-code
尝试绑定到page.MouseDown和page.MouseUp,但问题仍然完全相同。 - Steffen Cole Blake
加上一个override关键字呢?只是猜测,但如果它在某个基类中被覆盖了,那么这将起作用。 - chris-crush-code
请参考此链接:http://stackoverflow.com/questions/16100027/wpf-canvas-swallowing-mousedownevent .... 在您的ScrollViewer上使用Focusable="False"。 - Colin Smith
1个回答

2
你可能需要尝试使用“PreviewMouseDown”代替“MouseDown”,以及同样的方式处理所有其他无法工作的鼠标事件,因为它们可能已经被“能力”类基类中的其他内容处理了。

在Magento 2中无法工作 - fotorama图库上的mouseup/mousedown事件不触发。 - Dhaduk Mitesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接