【问题标题】:Minimizing Application to system tray using WPF ( Not using NotifyIcon )使用 WPF 将应用程序最小化到系统托盘(不使用 NotifyIcon)
【发布时间】:2013-02-05 05:13:31
【问题描述】:

我已经完成了我的应用程序,现在我想为其添加“最小化到系统托盘功能”。我读了一篇好文章minimize app to system tray。我意识到这些利用了 Windows.Form 类。

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

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

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

b) 我可以在 WPF 上不使用 NotifyIcon 执行最小化功能吗?如果是,那么有人如何给我线索?

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

【问题讨论】:

  • 编辑您的帖子;尝试添加这样的链接 [链接文本](http:/.......com)。

标签: c# wpf windows wpf-controls notifyicon


【解决方案1】:

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

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

【讨论】:

  • 谢谢@Marksl:很高兴知道它很稳定并且对你来说很好用。我会等待其他人提出他们的意见。或者如果他们有任何其他建议。
  • 对于我的项目,我计划将所有程序集与 ILMerge 合并在一起。最后 WPF NotifyIcon 太小了,我只是直接在项目中复制代码 - 也许不是最佳实践,但它很快。它真的没有太多代码。我有兴趣看看是否还有其他方法。
  • 我在我的项目中也使用了这个并且效果很好。您可以剥离不需要的代码,只需将最少需要的代码添加到您的应用程序中。我当时也尝试了很多东西,这是最好的解决方案。
  • @akjoshi 。感谢您的宝贵意见。我会考虑在我的应用程序中使用它。
  • 也可以通过NuGet获得
【解决方案2】:

我今天才看到这篇文章。

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

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

CodeProject Article Here

【讨论】:

    【解决方案3】:

    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);
    }}
    

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 2011-11-29
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多