Динамическое изменение места запуска окна 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 окна и установить позицию оттуда.