Window 在通知点击时打开

Window open on Notification click

我已经创建了一个聊天应用程序,所以当我收到一条消息时会生成一条通知,因此在单击通知时我的聊天应用程序应该会打开,我使用下面的代码做到了这一点

if (!ApplicationContext.ContactsViewModel.IsWindowOpen)
  {
     ApplicationContext.CurrentChatView.Dispatcher.Invoke(() =>
     {
        ApplicationContext.CurrentChatView.WindowState = WindowState.Normal;
        ApplicationContext.CurrentChatView.Activate();
     });
  }

所以这里的问题是我的应用程序在后台执行所有任务,而不是出现在前台

我也试过了:

ApplicationContext.CurrentChatView.Topmost=true;

但在这种情况下,即使在单击另一个 window 后,该应用程序仍保持在最上面。

还有其他选择吗?? 提前致谢

您可以使用 window.Show() / window.Hide() 方法在可见和隐藏模式之间切换:

private void ShowCurrentWindows()
{
   foreach (Window window in Application.Current.Windows)
   {
        if (!window.IsVisible)
        {
            window.Show();
        }
    }
}

private void HideCurrentWindows()
{
     foreach (Window window in Application.Current.Windows)
     {
         if (window.IsVisible)
         {
            window.Hide();
         }
     }
}

您应该更正您的方法调用顺序。请尝试以下操作:

if (!ApplicationContext.ContactsViewModel.IsWindowOpen)
{
    ApplicationContext.CurrentChatView.Dispatcher.Invoke(() =>
    {
        if (!Window.IsVisible)
        {
            Window.Show();
        }

        if (Window.WindowState == WindowState.Minimized)
        {
            Window.WindowState = WindowState.Normal;
        }

        Window.Activate();
        Window.Topmost = true;  // important
        Window.Topmost = false; // important
        Window.Focus();         // important
    });
}