Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Benachrichtigungen mit Hardcodet WPF Notifylcon
Keine Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Benachrichtigungen mit Hardcodet WPF NotifyIcon“.

WPF: Benachrichtigungen mit Hardcodet WPF NotifyIcon

Die WPF-Anwendung läuft im Hintergrund und soll den Benutzer interaktiv darüber benachrichtigen, sobald ein wichtiges Ereignis eintritt.

Als Vorzeigebeispiel dient hierbei in der Regel Microsoft Outlook, das den Benutzer mit einer eingehenden E-Mail informiert. Diese Art der Benachrichtigung ist eine der am häufigsten gewünschten Anforderungen.

Dennoch gibt es auch nach zehn Jahren WPF noch keine integrierte Lösung. Ein möglicher Workaround wäre das Hinzufügen der System.Windows.Forms Assembly. Sie stellt die NotifyIcon-Klasse zur Verfügung. Das Instanziieren und Entwerfen wird statisch im C#-Code hinzugefügt. Für das Anpassen des Designs wird ebenfalls einiges an zusätzlichem Code benötigt. Für den WPF-Entwickler ist dies aber leider nicht gerade mit Komfort verbunden.

Eine angenehme Alternative bietet die kostenlose Erweiterung Hardcodet WPF NotifyIcon. Diese basiert nicht auf Windows Forms und wurde somit komplett neu für einen idealen WPF-Support geschrieben. So kann die Erweiterung direkt in XAML eingebunden werden. Sie unterstützt die Anzeige von umfangreichen Tooltips, Pop-ups, Kontextmenüs und Balloon-Nachrichten.

Installiert wird Hardcodet WPF NotifyIcon über NuGet. Das Einbinden findet auch hier direkt in XAML statt. Der ideale Platz für einen anwendungsweiten Einsatz ist das Resource Dictionary der App.xaml. Der Name für das Steuerelement lautet TaskbarIcon. Wie der Name verrät, ist es hierbei ebenfalls möglich, ein Programmicon im Infobereich anzeigen zu lassen.

Auch das Hinterlegen eines eigenen Kontextmenüs ist ein Kinderspiel. In Listing 1 wird gezeigt, wie eine TaskbarIcon-Instanz anwendungsweit bereitgestellt wird. Dabei wird allerdings kein TaskbarIcon dauerhaft angezeigt. Das ist nur möglich, wenn ein eigenes Kontextmenü hinterlegt wird. Das ist jedoch in diesem Beispiel nicht relevant.

<Application.Resources>
    <tb:TaskbarIcon x:Key="MyNotifyIcon" IconSource="MyAppIcon.ico" />
</Application.Resources>

Der Zugriff erfolgt über das Resource Dictionary von Application. Die ShowBalloonTip-Methode lässt anschließend die gewünschte Benachrichtigung anzeigen. Es ist übrigens ebenfalls möglich, eigene UserControls über die ShowCustomBalloon-Methode anzeigen zu lassen. In Listing 2 wird der dazu benötige Code gezeigt und in Abbildung 1 das Ergebnis veranschaulicht. Wie die Erweiterung Hardcodet WPF NotifyIcon noch eingesetzt werden kann, zeigt die ausführliche Dokumentation auf Codeproject.

private void OnButtonClick(object sender, RoutedEventArgs e)
{
  var myNotifyIcon = (Hardcodet.Wpf.TaskbarNotification.TaskbarIcon) Application.Current.Resources["MyNotifyIcon"];
  myNotifyIcon.ShowCustomBalloon("Wichtig!", "Hallo Welt...", BalloonIcon.Warning);
}
Abb. 1: Eine Balloon-Benachrichtigung mit dem Hardcodet WPF NotifyIcon

Abb. 1: Eine Balloon-Benachrichtigung mit dem Hardcodet WPF NotifyIcon

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -