Ответ 1
Поместите это в свой конструктор окна
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET FrameworkSupported в: 4, 3.5, 3.0
Профиль клиента .NET FrameworkSupported в: 4, 3.5 SP1
Я хочу сосредоточить свое приложение WPF при запуске на основном экране. Я знаю, что мне нужно установить myWindow.Left и myWindow.Top, но где я могу получить значения?
Я нашел System.Windows.Forms.Screen.PrimaryScreen
, что, по-видимому, не WPF. Есть ли альтернатива WPF, которая дает мне разрешение экрана или что-то в этом роде?
Поместите это в свой конструктор окна
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET FrameworkSupported в: 4, 3.5, 3.0
Профиль клиента .NET FrameworkSupported в: 4, 3.5 SP1
XAML
WindowStartupLocation="CenterScreen"
Вы все равно можете использовать класс Screen из приложения WPF. Вам просто нужно ссылаться на сборку System.Windows.Forms из вашего приложения. После того, как вы это сделали, (и ссылаясь на System.Drawing для примера ниже):
Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
... отлично работает.
Считаете ли вы, что вы устанавливаете свойство главного окна WindowStartupLocation в CenterScreen?
Как насчет класса SystemParameters в PresentationFramework? Он имеет свойство WorkArea, которое, похоже, является тем, что вы ищете.
Но почему не будет работать Window.WindowStartupLocation? CenterScreen является одним из значений перечисления. Вам нужно настроить центрирование?
Вам не нужно ссылаться на сборку System.Windows.Forms
из вашего приложения. Вместо этого вы можете использовать System.Windows.SystemParameters.WorkArea
. Это эквивалентно System.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!
Нет эквивалента WPF. System.Windows.Forms.Screen
все еще является частью платформы .NET и может использоваться из WPF.
Подробнее см. этот вопрос, но вы можете использовать вызовы, относящиеся к экранам, с помощью WindowInteropHelper
, чтобы обернуть ваш элемент управления WPF.
var window = new MyWindow();
для центра экрана используйте:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
для центра родительского окна:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;