mehrere Notification Fenster gleichzeitig

Die Anwort ist, geht nicht. Silverlight 4 bringt zwar für OOB Anwendungen die Möglichkeit ein Popup im Bereich Tray Icons zu zeigen, aber eben nur eines. Wenn man ein zweites Notification Window per Show anzeigen möchte erntet man eine Exception. Die Lösung ist eine Queue zu bauen, etwas was ich seit ca 10 Jahren nicht mehr gemacht habe. In .NET ist das aber super einfach. Hier unkommentiert das komplette Code Beispiel. Um zuverlässig mehr Toasts erzeugen zu können als angezeigt werden habe ich einen Timer verwendet der jede Sekunde eine Notification Window anzeigt das 2 Sekunden steht.

Imports System.Windows.Threading

Partial Public Class page30
    Inherits UserControl

    Public Sub New()
        InitializeComponent()
    End Sub
    Dim dp As New DispatcherTimer
    Private nwQueue As Queue(Of NotificationWindow)
    Private nwIsopen As Boolean = False

    Private Sub Button1_Click(ByVal sender As System.Object, 
ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click nwQueue = New Queue(Of NotificationWindow)() dp.Interval = New TimeSpan(0, 0, 1) AddHandler dp.Tick, AddressOf ticking dp.Start() End Sub Private Sub ticking(ByVal sender As Object, ByVal e As EventArgs) Dim nw As New NotificationWindow nw.Width = 150 nw.Height = 30 nw.Content = New TextBlock With {.Text = "hannes" + Date.Now.Second.ToString} AddHandler nw.Closed, AddressOf nwClosed If Not nwIsopen Then nw.Show(2000) nwIsopen = True Else nwQueue.Enqueue(nw) End If End Sub Private Sub nwClosed(ByVal sender As Object, ByVal e As EventArgs) If nwQueue.LongCount = 0 Then nwIsopen = False Else Dim nw As NotificationWindow = nwQueue.Dequeue() nw.Show(2000) nwIsopen = True End If End Sub End Class

Kommentar schreiben