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