Как центрировать приложение WPF на экране?

Я хочу сосредоточить свое приложение WPF при запуске на основном экране. Я знаю, что мне нужно установить myWindow.Left и myWindow.Top, но где я могу получить значения?

Я нашел System.Windows.Forms.Screen.PrimaryScreen, что, по-видимому, не WPF. Есть ли альтернатива WPF, которая дает мне разрешение экрана или что-то в этом роде?

Ответ 1

Поместите это в свой конструктор окна

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET FrameworkSupported в: 4, 3.5, 3.0

Профиль клиента .NET FrameworkSupported в: 4, 3.5 SP1

Ответ 2

XAML

WindowStartupLocation="CenterScreen"

Ответ 3

Вы все равно можете использовать класс Screen из приложения WPF. Вам просто нужно ссылаться на сборку System.Windows.Forms из вашего приложения. После того, как вы это сделали, (и ссылаясь на System.Drawing для примера ниже):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

... отлично работает.

Считаете ли вы, что вы устанавливаете свойство главного окна WindowStartupLocation в CenterScreen?

Ответ 4

Как насчет класса SystemParameters в PresentationFramework? Он имеет свойство WorkArea, которое, похоже, является тем, что вы ищете.

Но почему не будет работать Window.WindowStartupLocation? CenterScreen является одним из значений перечисления. Вам нужно настроить центрирование?

Ответ 5

Вам не нужно ссылаться на сборку System.Windows.Forms из вашего приложения. Вместо этого вы можете использовать System.Windows.SystemParameters.WorkArea. Это эквивалентно System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!

Ответ 6

Нет эквивалента WPF. System.Windows.Forms.Screen все еще является частью платформы .NET и может использоваться из WPF.

Подробнее см. этот вопрос, но вы можете использовать вызовы, относящиеся к экранам, с помощью WindowInteropHelper, чтобы обернуть ваш элемент управления WPF.

Ответ 7

var window = new MyWindow();

для центра экрана используйте:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

для центра родительского окна:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;