使用NotifyIcon打开并隐藏WPF应用程序

时间:2017-11-23 04:32:37

标签: c# .net wpf xaml wpf-controls

我在Microsoft Visual Studio中创建了一个应用程序。应用程序将主要在后台运行,我希望用户能够通过单击通知中的图标打开窗口以查看进度并与进程交互来打开应用程序。我找到了tutorial about how to add a NotifyIcon to WPF这个教程似乎正在使用它; Hardcodet.NotifyIcon.Wpf

我已经能够显示通知图标,但是当我关闭应用程序时,我遇到了保持NotifyIcon打开的问题。关闭MainWindow后,调试过程结束。我在本教程中坚持这一部分;

public class App
{
  private TaskbarIcon tb;

  private void InitApplication()
  {
    //initialize NotifyIcon
    tb = (TaskbarIcon) FindResource("MyNotifyIcon");
  }
}   

我的申请App.xaml.cs

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}

我不知道如何添加TaskbarIcon ScraperNotifyIcon = (TaskbarIcon)FindResource("ScraperNotifyIcon");因为这是MainWindow的一个功能,此时尚未加载。我用什么方法把它放进去?

我有一个ResourceDictionary我添加了NotifyIcon,看起来像这样;

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:tb="http://www.hardcodet.net/taskbar">
    <!-- Globally declared notify icon -->
    <tb:TaskbarIcon IconSource="/AttorneyScraper;component/images/magnifying-glass/magnifying_glass512_Q32_icon.ico" ToolTipText="Attorney Scraper" x:Key="AttorneyScraperNotifyIcon" />
</ResourceDictionary>

当我将它添加到我认为是WPF的类MainWindow时,图标显示正常。但我希望独立于MainWindow加载NotifyIcon,并在单击时打开或关闭MainWindow。看起来教程在那个传球上跟着我,但我卡住了。

2 个答案:

答案 0 :(得分:0)

我认为缺少的教程是Application.ShutdownMode。默认情况下,WPF应用程序在其最后一个窗口关闭时关闭(OnLastWindowClose)。

您可以尝试将ShutdownMode更改为OnExplicitShutdown:

  

只有在调用Shutdown时,应用程序才会关闭。

您可以像这样更改ShutdownMode:

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml"
    ShutdownMode="OnExplicitShutdown">
</Application>

关于FindResource,您可以在MainWindow外部访问它,如下所示:

Application.Current.FindResource("MyNotifyIcon");

答案 1 :(得分:0)

您是否获得了与CodeProject教程捆绑在一起的示例应用程序?它包含各种样本,包括一个无窗口样本,显示如何从托盘打开/关闭应用程序窗口。