WPF: Окно SetBounds - PullRequest
       2

WPF: Окно SetBounds

2 голосов
/ 07 января 2011

Я использовал метод SetBounds в Windows. Forms вместо назначения свойств Left, Top, Width, Height, потому что каждый раз, когда я назначаю значение, которое меняет свойство location - окно меняет свою позицию.Назначение слева, сверху, ширины, высоты приводит к тому, что окно перемещается 4 раза, а SetBounds перемещает окна один раз (лучший интерфейс, без колебаний окна).

При переносе в WPF я обнаружил, что метод SetBounds отсутствуетПохоже, я должен изменить размер окна и положение шаг за шагом.

Каков наилучший способ изменить положение окна WPF за один ход окна?

1 Ответ

5 голосов
/ 07 января 2011

SetBounds недоступно в WPF, но вы можете легко P / вызвать API SetWindowPos:

    private IntPtr _handle;
    private void SetBounds(int left, int top, int width, int height)
    {
        if (_handle == IntPtr.Zero)
            _handle = new WindowInteropHelper(this).Handle;

        SetWindowPos(_handle, IntPtr.Zero, left, top, width, height, 0);
    }

    [DllImport("user32")]
    static extern bool SetWindowPos(
        IntPtr hWnd,
        IntPtr hWndInsertAfter,
        int x,
        int y,
        int cx,
        int cy,
        uint uFlags);

Left, Top, Width и Heightсвойства зависимостей будут автоматически обновлены, чтобы отразить новые границы.

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