Vous devez utiliser le contrôle NotifyIcon de System.Windows.Forms, ou vous pouvez également utiliser l'API Notify Icon fournie par l'API Windows. WPF ne fournit aucun équivalent, et il a été demandé plusieurs fois sur Microsoft Connect.
J'ai du code sur GitHub qui utilise le System.Windows.Forms
composant NotifyIcon à partir d'une application WPF, le code peut être consulté à https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs
Voici les bits de résumé:
Créez une fenêtre WPF avec ShowInTaskbar = False et qui est chargée dans un état non visible.
Au niveau de la classe:
private System.Windows.Forms.NotifyIcon notifyIcon = null;
Pendant OnInitialize ():
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];
Pendant OnLoaded ():
notifyIcon.Visible = true;
Et pour l'interaction (indiquée par notifyIcon.Click et DoubleClick ci-dessus):
void notifyIcon_Click(object sender, EventArgs e)
{
ShowQuickLaunchMenu();
}
De là, vous pouvez reprendre l'utilisation des contrôles WPF et des API tels que les menus contextuels, les fenêtres contextuelles, etc.
C'est si simple. Vous n'avez pas exactement besoin d'une fenêtre WPF pour héberger le composant, c'est juste le moyen le plus pratique d'en introduire une dans une application WPF (car une fenêtre est généralement le point d'entrée par défaut défini via App.xaml), de même, vous ne le faites pas. Vous avez besoin d'un WPF Wrapper ou d'un contrôle tiers, car le composant SWF est garanti présent dans toute installation .NET Framework qui prend également en charge WPF car il fait partie du .NET Framework (sur lequel toutes les versions actuelles et futures de .NET Framework s'appuient). À ce jour, rien n'indique de la part de Microsoft que la prise en charge de SWF sera bientôt supprimée du .NET Framework.
J'espère que cela pourra aider.
C'est un peu le fromage que vous devez utiliser un composant de cadre pré-3.0 pour obtenir une icône de barre d'état, mais comme Microsoft l'a expliqué, il n'y a pas de concept de barre d'état système dans le cadre de WPF. WPF est une technologie de présentation et les icônes de notification sont un concept de système d'exploitation (et non de «présentation»).