这是我的代码:
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。
答案 0 :(得分:1)
您可能想尝试'PreviewMouseDown'而不是'MouseDown',并且对于所有其他非工作鼠标事件也是如此,因为它们可能已经由您的'Abilities'类的基类处理。