Окно, открытое при нажатии на уведомление - PullRequest
0 голосов
/ 20 января 2020

Я создал приложение чата, поэтому, когда я получил сообщение, генерируется уведомление, чтобы при щелчке уведомления открывалось мое приложение чата, и я сделал это, используя следующий код

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

, поэтому проблема здесь в том, что мое приложение выполняет все задачи в фоновом режиме, но вместо того, чтобы появляться на переднем плане

Я также попытался:

ApplicationContext.CurrentChatView.Topmost=true;

, но в этом случае приложение остается самым верхним даже после нажатия на другое окно.

есть ли другая альтернатива ему? заранее спасибо

Ответы [ 2 ]

1 голос
/ 20 января 2020

Вы должны внести исправления в порядок вызова методов. Попробуйте следующее:

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
    });
}
0 голосов
/ 20 января 2020

Вы можете использовать методы 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();
         }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...