c# - 在辅助监视器中创建 WPF 窗口时遇到问题

标签 c# wpf user-interface

我正致力于在应用程序中实现一些类似 Chrome 的选项卡功能,但在正确生成新实例时遇到了一些问题。我已经对各种解决方案进行了大量搜索和迭代,但仍无法在第二台显示器上生成新窗口。

这是使用线程:

  1. 打开文件
  2. 将当前标签拖到其他显示器
  3. 在用户将选项卡拖动到的位置生成新的 App 实例,其中设置了该选项卡。

断开连接发生在第 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 ?参见 this post .

您可以从 this post 尝试这个 hack :

appView.SourceInitialized += (_, __) => appView.WindowState = WindowState.Maximized;
appView.Show();

关于c# - 在辅助监视器中创建 WPF 窗口时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362865/

相关文章:

c# - 在没有管理员权限的情况下使用 'schtasks' 调度任务 C#

wpf - 我们可以通过 LAN Access Db 共享 Silverlight 应用程序吗

java - 什么时候使用布局,什么时候使用 Activity ?

java - 为车辆陈列室实现 GUI

c# - 如何显示 Windows 登录对话框?

c# - 两个双数之间的随机数

c# - 是否可以禁用基于 .NET 版本的部分程序?

wpf - Windows 8 中的屏幕保护程序预览有何不同?

.net - WPF 绑定(bind)RelativeSource 问题

python - 替换 MainWindow 中的 CentralWidget