C# WPF仅在某些硬件配置上在辅助屏幕上创建窗口
我使用标准建议创建一个窗口并将其显示在辅助监视器上: 我使用以下方法获得可用屏幕:C# WPF仅在某些硬件配置上在辅助屏幕上创建窗口,c#,.net,wpf,windows,C#,.net,Wpf,Windows,我使用标准建议创建一个窗口并将其显示在辅助监视器上: 我使用以下方法获得可用屏幕: Screen[] availableScreens = Screen.AllScreens; 提取目标屏幕的工作区域(在我的情况下是第二个屏幕,而不是主屏幕): 创建窗口时,根据工作区域设置位置属性(在调用Show()之前): 关于窗口,还需要注意一些其他事项: 这是一个全屏窗口,旨在跨越整个秒 展示 它不是主应用程序窗口 它在任务栏中隐藏,旨在补充 主应用程序窗口 WindowState=WindowSta
Screen[] availableScreens = Screen.AllScreens;
提取目标屏幕的工作区域(在我的情况下是第二个屏幕,而不是主屏幕):
创建窗口时,根据工作区域设置位置属性(在调用Show()之前):
关于窗口,还需要注意一些其他事项:
- 这是一个全屏窗口,旨在跨越整个秒 展示
- 它不是主应用程序窗口
- 它在任务栏中隐藏,旨在补充 主应用程序窗口
- WindowState=WindowState.Maximized
- ShowInTaskbar=“假”
- WindowStyle=WindowStyle.None
- 在Windows 10 Enterprise V 1809上运行
- 当我在带有两个1920x1080显示器的工作站上运行此设置时,显示比例为100%,工作正常
- 当我在带有两个1920x1080显示器的工作站上运行此设置时,显示比例为150%,工作正常
- 当我在连接了1920x1080显示器和辅助USB显示器(800x480)的工作站上运行此设置时,显示比例为100%,可以正常工作
- 当我在连接了1920x1080显示器和辅助USB显示器(800x480)的工作站上运行此设置时,显示比例为150%,它可以工作
- 当我在Microsoft Surface Go上运行此功能时,主Surface显示屏(1800x1200)和辅助USB显示屏(800x480)连接到Surface dock,100%显示缩放,它可以正常工作
- 当我在Microsoft Surface Go上运行此功能时,主Surface显示屏(1800x1200)和辅助USB显示屏(800x480)连接到Surface dock,显示比例为150%,无法正常工作。相反,一旦调用Window.Show(),这将触发窗口重新定位到主显示(surface go屏幕)。我注意到了这一点,因为在调用window.Show()期间,我收到了窗口的LocationChanged事件,并看到宽度和高度属性已更新为曲面Go显示(1800x1200)的大小。但是,奇怪的是,即使窗口已移动,顶部和左侧属性也不会更新李>
- 尝试了各种配置的dpiAware和dpiAware。这些更改了我在获取可用屏幕时接收到的坐标的缩放比例,但使用缩放/未缩放坐标对该问题没有影响
- 更改显示缩放选项后重新启动Surface Go(根据显示设置中显示的“某些应用程序在您签字之前不会响应缩放更改”消息)
- 尝试设置WindowState=WindowState。在加载事件之前和之后都最大化,并且都产生相同的结果
secondaryScreenWorkingArea = availableScreens[1].WorkingArea;
Left = secondaryScreenWorkingArea.Left;
Top = secondaryScreenWorkingArea.Top;
Width = secondaryScreenWorkingArea.Width;
Height = secondaryScreenWorkingArea.Height;