IsMouseCaptured 变为 False
IsMouseCaptured turns to False
我正在实施一个简单的 Drag'n'Drop Bahevior。
首先我要订阅鼠标事件:
protected override void OnAttached()
{
base.OnAttached();
base.AssociatedObject.PreviewMouseLeftButtonDown += this.AssociatedObject_PreviewMouseLeftButtonDown;
base.AssociatedObject.PreviewMouseLeftButtonUp += this.AssociatedObject_PreviewMouseLeftButtonUp;
base.AssociatedObject.PreviewMouseMove += this.AssociatedObject_PreviewMouseMove;
}
然后我正在捕获鼠标:
private void AssociatedObject_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.startPoint = e.GetPosition(base.AssociatedObject);
base.AssociatedObject.CaptureMouse();
}
并处理鼠标移动:
private void AssociatedObject_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (base.AssociatedObject.IsMouseCaptured)
{
...
}
}
当按下鼠标按钮后立即进入此方法时,IsMouseCaptured 为真。但是当它输入后,IsMouseCaptured 始终为 false。我做错了什么?
提前致谢!
感谢 Hans Passant,我已经更新了代码:
/// <summary>
/// Handles pressing Mouse Button over the Control.
/// </summary>
private void AssociatedObject_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.startPoint = e.GetPosition(base.AssociatedObject);
base.AssociatedObject.CaptureMouse();
e.Handled = true;
}
将该事件标记为已处理有助于在拖动时捕获鼠标。
我正在实施一个简单的 Drag'n'Drop Bahevior。 首先我要订阅鼠标事件:
protected override void OnAttached()
{
base.OnAttached();
base.AssociatedObject.PreviewMouseLeftButtonDown += this.AssociatedObject_PreviewMouseLeftButtonDown;
base.AssociatedObject.PreviewMouseLeftButtonUp += this.AssociatedObject_PreviewMouseLeftButtonUp;
base.AssociatedObject.PreviewMouseMove += this.AssociatedObject_PreviewMouseMove;
}
然后我正在捕获鼠标:
private void AssociatedObject_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.startPoint = e.GetPosition(base.AssociatedObject);
base.AssociatedObject.CaptureMouse();
}
并处理鼠标移动:
private void AssociatedObject_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (base.AssociatedObject.IsMouseCaptured)
{
...
}
}
当按下鼠标按钮后立即进入此方法时,IsMouseCaptured 为真。但是当它输入后,IsMouseCaptured 始终为 false。我做错了什么?
提前致谢!
感谢 Hans Passant,我已经更新了代码:
/// <summary>
/// Handles pressing Mouse Button over the Control.
/// </summary>
private void AssociatedObject_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.startPoint = e.GetPosition(base.AssociatedObject);
base.AssociatedObject.CaptureMouse();
e.Handled = true;
}
将该事件标记为已处理有助于在拖动时捕获鼠标。