Ответ 1
WPF не включает удобный класс System.Windows.Forms. Экран, но вы можете использовать его свойства для выполнения своей задачи в своем приложении WinForms.
Предположим, что этот означает окно WinForms и _wpfWindow - это определенная переменная, ссылающаяся на окно WPF в приведенном ниже примере (это было бы в любом обработчике кода, который вы установили для открытия Окно WPF, как и обработчик Button.Click):
Screen screen = Screen.FromControl(this);
_wpfWindow.StartupLocation = System.Windows.WindowStartupLocation.Manual;
_wpfWindow.Top = screen.Bounds.Top;
_wpfWindow.Left = screen.Bounds.Left;
_wpfWindow.Show();
Приведенный выше код будет создавать окно WPF в верхнем левом углу экрана, содержащем окно WinForms. Я оставлю вам математику, если вы хотите поместить ее в другое место, например, в середине экрана или в "каскадный" стиль ниже и справа от окна WinForms.
Другим методом, который получает окно WPF в середине экрана, будет просто использовать
_wpfWIndow.StartupLocation = System.Windows.WindowStartupLocation.CenterScreen
Однако это не так гибко, потому что он использует положение мыши, чтобы определить, какой экран отображает окно WPF (и, очевидно, мышь может быть на другом экране в качестве вашего приложения WinForms, если пользователь его перемещает быстро, или вы используете кнопку по умолчанию или что-то еще).
Изменить: Здесь ссылка на документ SDK об использовании InterOp, чтобы получить окно WPF, ориентированное на окно, отличное от WPF. Это в основном то, что я описывал с точки зрения вычисления математики, но правильно позволяет вам установить свойство "Владелец" окна WPF Window с помощью Window HWND.