重写WPF DragMove()以捕捉到网格?

时间:2011-08-19 11:54:29

标签: c# wpf

我有一个WFP应用程序,它在桌面上显示一系列无边框窗口。它们可以根据用户的需要进行排列,我希望它们能够捕捉到不可见的网格,以帮助完美对齐。我可以使用以下代码中的代码实现此目的,处理LocationChanged事件并强制我的窗口位置逐步移动:

    private void Window_LocationChanged(object sender, EventArgs e)
    {
        int xProximity = (int)this.Left % 50;
        if (xProximity <= 10 || xProximity >= 40)
            this.Left = ((int)Math.Round(this.Left / 50.0)) * 50;

        int yProximity = (int)this.Top % 50;
        if (yProximity <= 10 || yProximity >= 40)
            this.Top = ((int)Math.Round(this.Top / 50.0)) * 50;
    }

然而,这种方法只是反动的,因为可以看到窗口在鼠标真正拍摄的位置重绘,然后立即快速回退。为了获得我所追求的流畅效果,我认为我需要覆盖DragMove,以便首先不使用鼠标来获取窗口。主动而非反应,如果你愿意 - 我希望这是有道理的 - 我已经看到一些线程遇到了同样的问题,但没有答案!谢谢大家:))

0 个答案:

没有答案