Sie müssen das NotifyIcon-Steuerelement von System.Windows.Forms verwenden, oder Sie können alternativ die von der Windows-API bereitgestellte Notify Icon-API verwenden. WPF bietet kein solches Äquivalent und wurde mehrmals in Microsoft Connect angefordert.
Ich habe Code auf GitHub, der System.Windows.Forms
NotifyIcon Component aus einer WPF-Anwendung verwendet. Der Code kann unter https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs angezeigt werden
Hier sind die Zusammenfassungsbits:
Erstellen Sie ein WPF-Fenster mit ShowInTaskbar = False, das in einem nicht sichtbaren Zustand geladen wird.
Auf Klassenebene:
private System.Windows.Forms.NotifyIcon notifyIcon = null;
Während OnInitialize ():
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];
Während OnLoaded ():
notifyIcon.Visible = true;
Und für die Interaktion (oben als notifyIcon.Click und DoubleClick dargestellt):
void notifyIcon_Click(object sender, EventArgs e)
{
ShowQuickLaunchMenu();
}
Von hier aus können Sie die Verwendung von WPF-Steuerelementen und APIs wie Kontextmenüs, Popup-Fenstern usw. wieder aufnehmen.
So einfach ist das. Sie benötigen nicht unbedingt ein WPF-Fenster, um die Komponente zu hosten. Dies ist nur die bequemste Möglichkeit, eines in eine WPF-App einzuführen (da ein Fenster im Allgemeinen der über App.xaml definierte Standardeinstiegspunkt ist). Sie benötigen keinen WPF-Wrapper oder ein Steuerelement eines Drittanbieters, da die SWF-Komponente garantiert in jeder .NET Framework-Installation vorhanden ist, die auch WPF-Unterstützung bietet, da sie Teil des .NET Framework ist (auf dem alle aktuellen und zukünftigen .NET Framework-Versionen aufbauen). Bisher gibt es keinen Hinweis von Microsoft, dass die SWF-Unterstützung bald aus .NET Framework entfernt wird.
Hoffentlich hilft das.
Es ist ein kleiner Käse, dass Sie eine Framework-Komponente vor 3.0 verwenden müssen, um ein Tray-Symbol zu erhalten, aber verständlicherweise gibt es, wie Microsoft es erklärt hat, kein Konzept für eine Taskleiste im Rahmen von WPF. WPF ist eine Präsentationstechnologie, und Benachrichtigungssymbole sind ein Betriebssystemkonzept (keine "Präsentation").