使用WPF最小化应用到系统托盘(未使用的NotifyIcon)(Minimizing Applica

2019-07-19 06:51发布

我完成让我的应用程序,现在我想收编“到最小化系统托盘功能”它。 我读了一篇好文章尽量减少应用程序到系统托盘 。 我意识到,这些利用Windows.Form类。

不幸的是我已经使用的Windows Presentation Foundation WPF的参考 ,使我的应用程序的用户界面。 现在我看到的NotifyIcon不WPF支持。 我看到有CodePlex上模拟NotifyIcon的性质的开源库WPF的Contrib我没有用它尚未。

现在我进退两难。 这里是我的问题: -

A)我不想掺入3'rd党库只是一个单一的组件。

B)我可以不用在WPF NotifyIcon的最小化的功能? 如果是,那么怎么能有人给我带来好吗?

或者,也许我应该恢复我的UI重新使用Windows窗体?

Answer 1:

如果您重新不愿意使用外部组件,我推荐WPF 的NotifyIcon 。 我用它。 它的简单和行之有效的。

它不只是依靠相应的WinForms组件上,但是它利用以显示丰富的工具提示,弹出窗口,上下文菜单和气球消息WPF框架的几个特征的纯粹独立控制。



Answer 2:

我只是碰到这个职位今天就来了。

作为参考,我也该解决了一段时间回来。 它的工作原理非常好,我有一个有点问题的唯一时间是偶尔在一些多显示器设置窗口。

这是前控释片和NuGets是中-的事情,我将它放在GIT回购,如果有兴趣。

CodeProject上的文章在这里



Answer 3:

这里是一个线程,这对我帮助很大。

https://stackoverflow.com/a/12428063/10305444

public partial class Window : System.Windows.Window{


public Window()
{
    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);
}}


文章来源: Minimizing Application to system tray using WPF ( Not using NotifyIcon )