Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Toast Notifications mit WPF
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: Toast Notifications mit WPF“.

Seit Windows 8 gibt es für Universal Windows Apps die Möglichkeit, interaktive Pop-up-Benachrichtigungen (Toast Notifications) einblenden zu lassen. Diese Funktionalität wurde vor Windows 8 gerade durch Microsoft Outlook sehr bekannt und beliebt. Bei einer neuen E-Mail wird dem Benutzer ein kleines Fenster mit den wichtigsten Informationen angezeigt. Nach ein paar Sekunden verschwindet es wieder. Die Entwickler mussten diese Lösung früher komplett selbst implementieren. Ab Windows 8 wurde durch die Windows Runtime eine einheitliche Schnittstelle bereitgestellt. Nur leider gibt es für WPF keine API-Schnittstelle.

Mit einem kleinen Trick lässt sich das Toast-Notification-API der Windows Runtime innerhalb von WPF nutzen. Dazu muss in der .csproj-Datei der folgende Eintrag hinzugefügt werden:

<PropertyGroup>
  <OutputType>WinExe</OutputType>
  <TargetPlatformVersion>8.0</TargetPlatformVersion>
  ...
</PropertyGroup>

Dann wird eine Referenz von Windows.UI und Windows.Data (Windows-Runtime-API für die Toast Notification) im Projekt benötigt. In Abbildung 1 wird gezeigt, wo sie zu finden ist.

Für die Windows-internen Toast Notifications gibt es eine Vielzahl an Standardtemplatevorlagen. Sie werden als XML-String an das Toast-Notification-API überreicht. Die unterschiedlichen Vorlagen gibt es auf der MSDN-Website. Für dieses Beispiel wird die Vorlage ToastText04 verwendet. Nachdem der XML-String erzeugt wurde, wird er über den ToastNotificationManager mit CreateToastNotifier an das Betriebssystem gesendet. Den kompletten Code zeigt Listing 1.

Abb. 1: Windows Runtime Libraries referenzieren

Abb. 1: Windows Runtime Libraries referenzieren

var xml = @"<toast>
  <visual>
    <binding template=""ToastText04"">
      <text id=""1"">This is Notification Message</text>
        <text id=""2"">This is second line Notification</text>
        <text id=""3"">This is Third line Notification</text>
      </binding>
    </visual>
  </toast>";
var toastXml = new XmlDocument();
toastXml.LoadXml(xml);
var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier("Sample toast").Show(toast);
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 -