我在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。看起来这个教程在那个传球上跟着我,但我卡住了。
我认为教程缺少的是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");
您是否获得了与CodeProject教程捆绑在一起的示例应用程序?它包含各种样本,包括一个无窗口样本,显示如何从托盘打开/关闭应用程序窗口。