首页 > 解决方案 > 使用 Prism 在第二台显示器上显示 wpf 窗口

问题描述

我正在使用 Prism 开发一个 wpf 应用程序:

在监视器 1 上打开应用程序。应该在监视器 2 上启动全屏窗口。

该窗口将用于绘制图形。

如何使用 Prism 创建 2 个窗口?我应该使用对话框来显示这个,还是有更好的方法在第二个监视器上显示一个窗口并绘制 grpahics?

标签: wpfmvvmprismmultiple-monitors

解决方案


您必须使用 System.Windows.Forms 才能使用“屏幕”,这将为您连接的屏幕/显示器提供分辨率、主显示和其他信息。

您必须为辅助显示创建另一个窗口/外壳以及单独的区域管理器来管理辅助显示的区域和导航。请参阅以下创建辅助窗口和区域管理器的方法

InitializeShell(Window shell) method

现在您还必须创建一个单独的区域管理器并将实例存储在某种全局变量中以管理辅助显示上的导航。

protected override void InitializeShell(Window shell)
   base.InitializeShell(shell);
   Current.MainWindow.Show();

   var regionManager = this.Container.Resolve<IRegionManager>();
   var secondRegionManager = regionManager.CreateRegionManager();

   SecondaryWindow secondaryWindow = new SecondaryWindow(secondRegionManager);

   System.Drawing.Rectangle rectangle = secondaryScreen.WorkingArea;
   secondaryWindow.WindowState = System.Windows.WindowState.Normal;
   secondaryWindow.WindowStartupLocation = 
   System.Windows.WindowStartupLocation.Manual;
   secondaryWindow.Top = rectangle.Top;
   secondaryWindow.Left = rectangle.Left;

   secondaryWindow.Show();
   secondaryWindow.WindowState = System.Windows.WindowState.Maximized;
            
   GlobalVariables.SecondaryRegionManager = secondRegionManager;  // storing in global variable

推荐阅读