26

我已经完成了我的应用程序,现在我想为它合并“最小化到系统托盘功能”。我读了一篇好文章 将应用程序最小化到系统托盘。我意识到这些利用了 Windows.Form 类。

不幸的是,我使用 Windows Presentation Foundation WPF 参考来制作我的应用程序 UI。现在我看到 WPF 不支持 NotifyIcon。我看到 CodePlex 上有一个开源库,它模拟 NotifyIcon 属性WPF Contrib我还没有使用它。

现在我正在修复中。这是我的问题:-

a) 我不想仅仅为一个组件合并一个 3'rd 方库。

b) 我可以在 WPF 上没有 NotifyIcon 的情况下执行最小化功能吗?如果是,那么有人怎么能给我线索?

或者也许我应该将我的 UI 恢复为使用 Windows 窗体?

4

3 回答 3

32

如果您重新考虑不愿意使用外部组件,我推荐 WPF NotifyIcon。我用过。这很简单,而且效果很好。

它不仅仅依赖于相应的 WinForms 组件,而是一个纯粹的独立控件,它利用 WPF 框架的多个功能来显示丰富的工具提示、弹出窗口、上下文菜单和气球消息。

于 2013-02-05T05:24:42.770 回答
2

我今天才看到这个帖子。

作为参考,我也解决了这个问题。它工作得很好,我唯一遇到的问题是偶尔在一些多显示器设置上。

这是在 GIT 和 NuGet 出现之前,如果有兴趣,我会将它放在 GIT 存储库中。

CodeProject 文章在这里

于 2016-10-27T15:14:35.013 回答
-2

使用 System.Windows.Forms.NotifyIcon 的解决方案

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

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);
}}
于 2019-01-04T07:57:08.893 回答