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;
    }

将该事件标记为已处理有助于在拖动时捕获鼠标。