Динамическое изменение места запуска окна WPF

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

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

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

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

2 ответа

Решение

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

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).

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

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

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

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

Другие вопросы по тегам