Я пытаюсь разместить диалоговое окно WPF в левом верхнем углу экрана ток. Однако я не знаю, как получить эти координаты для любого другого экрана, кроме основного. Для основного экрана Top и Left будут равны 0. Однако для любого другого экрана мне нужно знать смещение. У меня мог бы быть второй или даже третий экран. Чтобы усложнить ситуацию: Эти другие экраны могут (теоретически) располагаться слева, сверху или ниже основного экрана.
Я провел некоторое исследование, но не смог найти решение. Может ли кто-нибудь указать мне правильное направление?
Предложение mm8 указало мне на решение.





Попробуйте установить значения для Window.Left и Window.Top:
window.Left = 0;
window.Top = 0-window.Height;
window.ShowDialog();
Как оказалось, я просто не увидел необходимых свойств: каждый объект Screen имеет свои собственные свойства Top и Left в пределах своей рабочей области.
Это работает для меня:
var topLeftCornerOfMainWindow = new System.Drawing.Point((int)System.Windows.Application.Current.MainWindow.Left, (int)System.Windows.Application.Current.MainWindow.Top);
var currentScreen = Screen.FromPoint(topLeftCornerOfMainWindow);
this.Top = currentScreen.WorkingArea.Top;
this.Left = currentScreen.WorkingArea.Left;
this.Width = currentScreen.WorkingArea.Width;
this.Height = currentScreen.WorkingArea.Height;
Вы пробовали это?