【发布时间】: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,它们会返回所有屏幕的组合大小。 -
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。