WPF窗口报告拖动后旧的左属性

本文关键字:属性 窗口 报告 拖动 WPF | 更新日期: 2023-09-27 18:02:37

所以我有这个问题,调用DragMove()后,窗口报告其旧的Left属性,如果DragMove根本没有改变它。

假设窗口的左边当前是100像素,我移动窗口使用DragMove():

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        DragMove();
    }
}

之后,我点击一个按钮,显示新的窗口左侧位置:

private void SomeButton_Click(object sender, RoutedEventArgs e)
{
        MessageBox.Show(Left.ToString());
}

然而,消息框仍然显示'100',好像窗口根本没有移动,尽管它移动了…

我错过了什么?

WPF窗口报告拖动后旧的左属性

我发现了这个问题,我正在动画Left属性,并且由于某种原因,Left即使在使用DragMove()移动窗口后也会继续报告相同的动画后值。

为了让它工作,我必须从表单中删除动画,一旦它完成,如下所示:

DoubleAnimation _leftAnimation = new DoubleAnimation();
//...animation settings...
_leftAnimation.Completed += delegate(object animSender, EventArgs animE)
{
    BeginAnimation(Window.LeftProperty, null);
};
this.BeginAnimation(LeftProperty, _leftAnimation);