【问题标题】:Window open on Notification click单击通知时打开的窗口
【发布时间】:2020-01-20 04:07:15
【问题描述】:

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

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

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

我也试过了:

ApplicationContext.CurrentChatView.Topmost=true;

但在这种情况下,即使在单击另一个窗口后,应用程序仍保持在最顶层。

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

【问题讨论】:

    标签: c# wpf notifications


    【解决方案1】:

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

    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
        });
    }
    

    【讨论】:

    • 这有点好笑,但非常感谢您的回答。
    【解决方案2】:

    您可以使用 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();
             }
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2014-12-02
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多