** Ce projet est une continuation du projet de base inactif vers d'autres plateformes (WinUI/Uno.Skia.Wpf/Console) - https://github.com/hardcodet/wpf-notifyicon **
Il s'agit d'une implémentation d'un NotifyIcon (alias icône de la barre d'état système ou icône de la barre des tâches) pour les plates-formes .Net 6 WPF/WinUI/Uno.Skia.WPF/Console. Il ne repose pas uniquement sur le composant Windows Forms NotifyIcon, mais constitue un contrôle purement indépendant qui exploite plusieurs fonctionnalités des frameworks WPF/WinUI afin d'afficher des info-bulles riches, des fenêtres contextuelles, des menus contextuels et des messages-bulles. Il peut être utilisé directement dans le code ou intégré dans n’importe quel fichier 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 introduit un nouveau concept appelé Mode Efficacité.
Puisque, fondamentalement, cette bibliothèque est destinée aux applications qui existent en arrière-plan avec la possibilité d'interagir via TrayIcon, la bibliothèque implémente une API pour ce mode :
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
Exemple 1 :
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
Foreground = " Red "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
Exemple 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 >
Exemple 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 >
Exemple 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 >
Il est recommandé d'épingler l'icône du concepteur pour une visualisation facile. Pour ce faire, accédez à Paramètres de la barre des tâches -> Autres icônes de la barre d'état système et activez cette icône :
Pour le moment, trois modes sont implémentés, chacun avec ses propres avantages et inconvénients.
Disponibilité de diverses options (dépend de la version de WindowsAppSDK
que vous utilisez) :
Option | Application packagée | Application non emballée |
---|---|---|
Transparence | à partir de la version 1.1.0-aperçu | à partir de la version 1.1.0-aperçu |
Sans frontières | à partir de la version 1.1.0-aperçu | |
Animations | , mais avec des frontières | à partir de la version 1.1.0-aperçu |
Sous-menus |
Place prioritaire pour les bugs : https://github.com/HavenDV/H.NotifyIcon/issues Place prioritaire pour les idées et questions générales : https://github.com/HavenDV/H.NotifyIcon/discussions J'ai aussi un Discord canal d'assistance :
https://discord.gg/g8u2t9dKgE