我有一个只有退出“X”按钮的WPF应用程序。应用程序启动时会启动系统托盘图标。当单击“X”时,我想“隐藏”或关闭主窗口到系统托盘。我怎样才能做到这一点?
答案 0 :(得分:1)
您需要做的主要事情是将ShutdownMode
的{{1}}更改为Application
。您可以在OnExplicitShutdown
中设置它,然后应用程序将保持活动状态,直到您从代码中调用App.xaml
(可能基于某些显式用户命令)。如何处理从托盘图标重新打开窗口取决于您的具体实现,但这至少应该让您开始。
答案 1 :(得分:1)
如果您重新考虑不愿意使用外部组件,我建议使用WPF NotifyIcon。我已经用过了。它很简单,效果很好。
它不仅仅依赖于相应的WinForms组件,而且是一个纯粹的独立控件,它利用WPF框架的几个功能来显示丰富的工具提示,弹出窗口,上下文菜单和气球消息。如果按[x]
,你也可以在Closing Event处理代码示例:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
ni.Icon = new System.Drawing.Icon("Main.ico");
ni.Visible = true;
ni.DoubleClick +=
delegate(object sender, EventArgs args)
{
this.Show();
this.WindowState = WindowState.Normal;
};
}
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Minimized)
this.Hide();
base.OnStateChanged(e);
}
}
/// <summary>
/// Handles a click on the notify icon or its balloon.
/// </summary>
/// <param name="sender">Event source.</param>
/// <param name="e">Event arguments.</param>
private void HandleNotifyIconOrBalloonClicked(object sender, EventArgs e)
{
// Restore the Window
_window.WindowState = WindowState.Normal;
}