【问题标题】:Keep WPF window on the current working monitor (in multiple-monitor setup) [Closed/Duplicate]在当前工作的监视器上保留 WPF 窗口(在多监视器设置中)[关闭/重复]
【发布时间】: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.VirtualScreenHeightSystemParameters.VirtualScreenWidth,它们会返回所有屏幕的组合大小。
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: c# wpf windows monitor


【解决方案1】:

我只是错过了添加工作区的左坐标和上坐标。下面的链接帮助我将 WPF 窗口集中在当前工作的监视器上,并连接了多个监视器(具有不同的 DPI 比例)。 访问https://stackoverflow.com/a/68283497/6454203

【讨论】:

  • 首选标记为重复和/或关闭您的问题,而不是提供另一个链接。这是为了防止使用相同的答案多次提出相同的问题
猜你喜欢
  • 2015-11-09
  • 2011-12-04
  • 2012-05-28
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多