在我的解决方案中,我有一个包含 MainWindow(又名,我的应用程序的主窗口)的项目。在同一解决方案的另一个项目中,我有一个聊天客户端用户控件,当用户收到新消息时会显示一个通知窗口。
我希望我的通知窗口在 MainWindow 可能出现的任何地方弹出。只要用户有 1 个监视器,下面的代码就可以工作,或者如果有多个监视器,则 MainWindow 最大化。但是,如果 MainWindow 被最小化,通知会出现在工作区的右上角,而不是 MainWindow。
我已经尝试了下面的每个代码集(在 ChatClient.xaml.cs 中执行),但没有成功。
private const double topOffset = 0;
private const double leftOffset = 300;
popNotification.Top = Application.Current.MainWindow.Top + topOffset;
popNotification.Left = Application.Current.MainWindow.Width - leftOffset;
或者
popNotification.Top = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Top + topOffset;
popNotification.Left = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right - leftOffset;
如何让我的通知窗口始终显示在 MainWindow 顶部?我应该在 MainWindow.xaml.cs 中执行它吗?谢谢你的帮助!
编辑
下面的代码还会导致我的应用程序(通过 MainWindow)崩溃。尽我所能,这将窗口所有者设置为用户控件,而不是 MainWindow。我需要做什么?
popNotification.Owner = Window.GetWindow(this);
也试过这个:
popNotification.Owner = Window.GetWindow(Application.Current.MainWindow);