H.NotifyIcon
1.0.0
** 该项目是非活动基础项目到其他平台 (WinUI/Uno.Skia.Wpf/Console) 的延续 - https://github.com/hardcodet/wpf-notifyicon **
这是 .Net 6 WPF/WinUI/Uno.Skia.WPF/Console 平台的 NotifyIcon(又名系统托盘图标或任务栏图标)的实现。它不仅依赖于 Windows 窗体 NotifyIcon 组件,而且是一个完全独立的控件,它利用 WPF/WinUI 框架的多个功能来显示丰富的工具提示、弹出窗口、上下文菜单和气球消息。它可以直接在代码中使用,也可以嵌入到任何 XAML 文件中。
Install-Package H.NotifyIcon.Wpf
Install-Package H.NotifyIcon.WinUI
Install-Package H.NotifyIcon.Uno
Install-Package H.NotifyIcon.Uno.WinUI
# If you need other platforms, you can use this Core library -
# it allows you to make NotifyIcon even in a console application.
Install-Package H.NotifyIcon
< Window
xmlns : tb = " clr-namespace:H.NotifyIcon;assembly=H.NotifyIcon.Wpf " // WPF
xmlns : tb = " using:H.NotifyIcon " // WinUI
>
< tb : TaskbarIcon
ToolTipText = " ToolTip "
IconSource = " /Images/TrayIcons/Logo.ico "
ContextMenu = " {StaticResource TrayMenu} "
MenuActivation = " LeftOrRightClick "
TrayPopup = " {StaticResource TrayStatusPopup} "
PopupActivation = " DoubleClick "
TrayToolTip = " {StaticResource TrayToolTip} "
/>
</ Window >
Windows 11 引入了一个称为效率模式的新概念。
基本上,该库旨在让应用程序存在于后台并能够通过 TrayIcon 进行交互,因此该库为此模式实现了一个 API:
EfficiencyModeUtilities . SetEfficiencyMode ( bool value )
WindowExtensions . Hide ( this Window window , enableEfficiencyMode : true ) // default value
WindowExtensions . Show ( this Window window , disableEfficiencyMode : true ) // default value
TaskbarIcon . ForceCreate ( bool enablesEfficiencyMode = true ) // default value
示例1:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
Foreground = " Red "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
示例2:
< tb : TaskbarIcon
IconSource = " /Icons/Error.ico "
>
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " 5 "
Foreground = " Black "
FontSize = " 36 "
FontWeight = " Bold "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
示例3:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
Foreground = " Red "
FontFamily = " Segoe UI Emoji "
Background = " AliceBlue "
FontWeight = " Bold "
FontSize = " 38 "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
示例4:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
BorderThickness = " 5 "
FontSize = " 46 "
>
< tb : GeneratedIconSource .Foreground>
< LinearGradientBrush StartPoint = " 0,0 " EndPoint = " 128,128 " >
< GradientStop Color = " White " />
< GradientStop Color = " Red " />
</ LinearGradientBrush >
</ tb : GeneratedIconSource .Foreground>
< tb : GeneratedIconSource .BorderBrush>
< LinearGradientBrush StartPoint = " 0,0 " EndPoint = " 128,128 " >
< GradientStop Color = " White " />
< GradientStop Color = " Red " />
</ LinearGradientBrush >
</ tb : GeneratedIconSource .BorderBrush>
</ tb : GeneratedIconSource >
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
建议固定设计器图标以方便查看。为此,请转至任务栏设置 -> 其他系统托盘图标并启用此图标:
目前实施了三种模式,每种模式都有自己的优点和缺点。
各种选项的可用性(取决于您使用的WindowsAppSDK
版本):
选项 | 打包应用程序 | 未打包的应用程序 |
---|---|---|
透明度 | 从 1.1.0 预览版开始 | 从 1.1.0 预览版开始 |
无边框 | 从 1.1.0 预览版开始 | |
动画 | ,但有边框 | 从 1.1.0 预览版开始 |
子菜单 |
错误的优先位置:https://github.com/HavenDV/H.NotifyIcon/issues 想法和一般问题的优先位置:https://github.com/HavenDV/H.NotifyIcon/discussions 我也有一个 Discord支持渠道:
https://discord.gg/g8u2t9dKgE