MouseDown / MouseLeftButtonDown事件未触发,MouseUp是?

时间:2017-04-25 19:07:44

标签: c# wpf visual-studio visual-studio-2017

这是我的代码:

    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!");
    }

Page是一个页面,Scrollbar是一个Scrollview。

我知道我移动滚动条的逻辑可能还不正确,但我们还没有达到那么远。

由于某些奇怪的原因,无论是否将鼠标绑定到MouseDown或MouseLeftButtonDown,MouseDown事件都不会触发。

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

这似乎很奇怪,因为通常如果一个被打破,另一个也是......

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

1 个答案:

答案 0 :(得分:1)

您可能想尝试'PreviewMouseDown'而不是'MouseDown',并且对于所有其他非工作鼠标事件也是如此,因为它们可能已经由您的'Abilities'类的基类处理。