在当前工作的监视器上保留 WPF 窗口(在多监视器设置中)[关闭/重复]
Posted
技术标签:
【中文标题】在当前工作的监视器上保留 WPF 窗口(在多监视器设置中)[关闭/重复]【英文标题】:Keep WPF window on the current working monitor (in multiple-monitor setup) [Closed/Duplicate] 【发布时间】:2021-11-09 17:00:57 【问题描述】:我正在开发一个 WPF 应用程序。在我的应用程序中会有一个主窗口 (System.Windows.Window),在它之上我将在页面之间导航 (System.Windows.Controls.Page)。每当我从一个页面导航到另一个页面时,我希望它位于当前工作监视器的中心(多个监视器将可用)。我可以使用下面的代码实现主窗口的中心定位。 每当我在页面之间导航时,我将使用当前窗口的宽度和高度调用以下代码(例如:登录页面 -> 主页)
public static void CenterWindowOnScreen(double width, double height)
double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
double windowWidth = width;
double windowHeight = height;
App.Current.MainWindow.Left = (screenWidth / 2) - (windowWidth / 2);
App.Current.MainWindow.Top = (screenHeight / 2) - (windowHeight / 2);
在应用程序启动时,主窗口加载登录页面并位于主监视器的中心。现在我将主窗口拖放到另一个(辅助)监视器,当我尝试登录时,主窗口会自动移动到主监视器。所以现在主窗口加载了主页,但窗口在主监视器上。我想将主窗口保持在当前工作监视器的中心(在本例中为辅助监视器)。
【问题讨论】:
我建议不要让你的窗口自己跳来跳去。作为用户,我觉得这很不愉快。如果您确定该功能,或者无法控制它,我建议使用SystemParameters.VirtualScreenHeight
和SystemParameters.VirtualScreenWidth
,它们会返回所有屏幕的组合大小。
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
【参考方案1】:
我只是错过了添加工作区的左坐标和上坐标。下面的链接帮助我将 WPF 窗口集中在当前工作的监视器上,并连接了多个监视器(具有不同的 DPI 比例)。 访问https://***.com/a/68283497/6454203
【讨论】:
首选标记为重复和/或关闭您的问题,而不是提供另一个链接。这是为了防止使用相同的答案多次提出相同的问题以上是关于在当前工作的监视器上保留 WPF 窗口(在多监视器设置中)[关闭/重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI