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