Как разместить окно на мультимониторных дисплеях в WPF? - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь расположить окно в верхнем правом углу моего дополнительного дисплея.В обработчике событий Window_Loaded у меня есть следующий код:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    this.Left = Screen.AllScreens[1].WorkingArea.Left;
    this.Top = Screen.AllScreens[1].WorkingArea.Top;
}

Это прекрасно работает, когда оба моих дисплея имеют масштабный коэффициент 100%, но как только я меняю масштаб основного дисплея,окно полностью загружается за пределы экрана.

Кто-нибудь знает способ абсолютно позиционировать окно в WPF?Большинство ответов, которые я нашел, относятся к пред-Win8.1 и не должны беспокоиться о масштабировании.Кажется, я не могу понять шаблон за свойствами Top и Left.Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Я нашел решение этой проблемы в CodeProject

Wpf-окна на двух экранах

Решение состоит в том, чтобы вычислить соотношение между реальным разрешением и *Разрешение 1007 *.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var scaleRatio = Math.Max(Screen.PrimaryScreen.WorkingArea.Width / SystemParameters.PrimaryScreenWidth,
                Screen.PrimaryScreen.WorkingArea.Height / SystemParameters.PrimaryScreenHeight);
    this.Left = Screen.AllScreens[1].WorkingArea.Left / scaleRatio ;
    this.Top = Screen.AllScreens[1].WorkingArea.Top / scaleRatio ;
}
0 голосов
/ 14 мая 2018

Вы можете сделать следующее

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var p = this.PointFromScreen(new Point(Screen.AllScreens[1].WorkingArea.X, Screen.AllScreens[1].WorkingArea.Y));
    this.Left += p.X;
    this.Top += p.Y;
}

Я понял, что функция PointFromScreen сообщает вам смещение абсолютной координаты вашего окна.Выберите положение в верхнем левом углу экрана, и вы знаете, сколько вам нужно двигаться, но, что важно, оно в тех же единицах, что и у Top и Bottom вашего окна.Это довольно узкий случай, но его можно экстраполировать на позиционирование в целом.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...