Я работаю над реализацией некоторых функциональных возможностей Chrome-подобных вкладок в приложении, и у меня возникли проблемы с правильным созданием нового экземпляра.Я провел довольно много поиска и итерации по различным решениям, но еще не смог создать новое окно на втором мониторе.
Вот поток использования:
- Открыть файл
- Перетащить текущую вкладку на другой монитор
- Новый экземпляр приложения создается с установленной в нем вкладкой в том месте, куда пользователь перетащил вкладку.
Отключение выполняется на шаге 3. Новый экземпляр всегда создается на основном мониторе.
Итак, некоторый код для расширения проблемы.
namespace app {
public class AppView {
public void OpenInNewWindow()
{
// Create a new viewmodel
var appViewModel = new AppVM();
//// On my machine this returns the correct screen "DISPLAY2". The Top and Left properties are 0 and 1680, respectively.
var targetScreen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
////So we can set the position of the new view
var appView = new AppView(appViewModel);
//This seats the currently selected data tab inside the new AppViewModel
RelocateSelectedViewModel(appViewModel);
appView.WindowStartupLocation = System.Windows.WindowStartupLocation.Manual;
appView.Top = targetScreen.WorkingArea.Top;
appView.Left = targetScreen.WorkingArea.Left;
appView.Show();
// Have to maximize after we Show() or it won't appera on secondary monitors according to THE INTERNET!
appView.WindowState = System.Windows.WindowState.Maximized;
appView.Focus();
}
}
}
Полагаю, мне следует упомянутьчто у меня нет проблем с получением второго экрана.targetScreen в приведенном выше коде правильно находит нужный мне экран, а значения Top и Left нового окна корректно устанавливаются в 0 и 1680 соответственно.Просто команда AppView.Show () (которая фактически является Window.Show ()) создает окно на основном экране.
Я перенес этот же код в отдельный проект, и он сработал, чтозаставляет меня поверить, что между моим новым appView и текущим, который переопределяет мои наборы, есть какая-то связь.Кто-нибудь сталкивался с этой проблемой раньше?