我正在努力在应用程序中实现一些类似 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 和当前覆盖我的设置的 appView 之间存在某种联系。以前有人遇到过这个问题吗?
您尝试过使用Winforms吗?Screen.FromControl http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.fromcontrol.aspx? See 这个帖子 https://stackoverflow.com/a/512691/175679.
你可以尝试这个黑客这个帖子 https://stackoverflow.com/a/3151949/175679:
appView.SourceInitialized += (_, __) => appView.WindowState = WindowState.Maximized;
appView.Show();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)