wpf - 使用 Prism 在第二台显示器上显示 wpf 窗口
问题描述
我正在使用 Prism 开发一个 wpf 应用程序:
在监视器 1 上打开应用程序。应该在监视器 2 上启动全屏窗口。
该窗口将用于绘制图形。
如何使用 Prism 创建 2 个窗口?我应该使用对话框来显示这个,还是有更好的方法在第二个监视器上显示一个窗口并绘制 grpahics?
解决方案
您必须使用 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
推荐阅读
- azure - Microsoft Authenticator 应用程序在连接到移动数据时无法正常工作,但通过 WIFI 可以正常工作
- macos - 绕过 Mac App Store 对提权的限制
- ruby-on-rails - 如果我通过 zip 文件将 ruby on rails 5.2 版项目发送给某人,我的加密凭据是否仍然有效?
- python - 如何将 groupby 应用于最近的相同元素
- bash - 如何获取嵌套在引号中的命令的 PID?
- java - 为什么有些用 Golang 编写的函数运行速度比用 Java 还要慢?
- excel - 添加查询时获取当前目录路径
- python - 在 docker-compose 中运行 python selenium
- android - 中国安卓设备。WebView 使用什么浏览器?
- python - 训练最后一层inception_v4时要训练哪些变量。(trainable_scopes/checkpoint_exclude_scopes)