Динамическое изменение начального местоположения окна WPF

97
8

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


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


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


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

спросил(а) 2021-01-19T17:23:41+03:00 2 месяца, 3 недели назад
1
Решение
122

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


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

ответил(а) 2021-01-19T17:23:41+03:00 2 месяца, 3 недели назад
44

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


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

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


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

ответил(а) 2021-01-19T17:23:41+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема