Динамическое изменение места запуска окна WPF - PullRequest
4 голосов
/ 09 октября 2009

Это дополнительный вопрос к ответу на вопрос [здесь] [1].

Там позиция запуска окна WPF была определена в XAML. Теперь мне интересно, как изменить эти свойства в коде? Например, я мог бы сказать что-то вроде:

Window1.Top = 40 в обработчике события загрузки окна? Или какое событие окна мне нужно было бы установить, чтобы оно динамически изменяло начальную позицию?

Цель состоит в том, чтобы динамически установить начальную позицию окна до ее визуализации.

Ответы [ 2 ]

7 голосов
/ 10 октября 2009

Это довольно легко сделать в коде:

public partial class Window1 {

    public Window1()
    {
         InitializeComponent();
         this.Height = 500;
         this.Width = 500;
         this.WindowStartupLocation = WindowStartupLocation.Manual;
         this.Left = 0;
         this.Top = 0;
    }
}

Вы можете установить любой из параметров, которые вы пожелаете, но если вы собираетесь установить Top / Left, убедитесь, что вы установили WindowStatupLocation (или установите его вручную в XAML).

0 голосов
/ 10 октября 2009

Лично я бы бросил строки типа "Window1.Top = 40" в конструктор после вызова InitializeComponent (). Это обязательно будет вызвано до того, как окно будет отображено.

Редактировать: Упс. Я должен был прочитать более внимательно.

Вы пытаетесь установить положение окна в каком-либо классе, отличном от самого окна? Мое предложение будет работать, если вы сможете установить положение Window1 из конструктора Window1.

В противном случае, я бы сказал, что лучшее, что вы можете сделать, - это прослушать событие Loaded окна и установить позицию оттуда.

...