Переопределение WPF DragMove () для привязки к сетке? - PullRequest
3 голосов
/ 19 августа 2011

У меня есть приложение 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, чтобы в первую очередь окно не было взято с помощью мыши.Проактивный, а не реактивный, если хотите - надеюсь, это имеет смысл - я видел, как несколько потоков сталкивались с одной и той же проблемой, но ничего с ответом!Спасибо всем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...