using System; using System.Collections.ObjectModel; using System.Windows; using Telerik.Windows.Controls; namespace WpfApp76 { public partial class MainWindow : Window { private const int MAX_MESSAGE_COUNT = 2; private RadDesktopAlertManager manager = new RadDesktopAlertManager(); private readonly List m_alertsCollection; public MainWindow() { InitializeComponent(); m_alertsCollection = new List(); } private void RadButton_Click(object sender, RoutedEventArgs e) { AddAlert("a"); RemoveAlert("a"); AddAlert("b"); RemoveAlert("b"); AddAlert("c"); } private void AddAlert(string alertId) { var alert = new RadDesktopAlert { Header = alertId }; alert.Closed += Alert_Closed; m_alertsCollection.Add(alert); if (m_alertManager.GetAllAlerts().Count() < MAX_MESSAGE_COUNT) { m_alertManager.ShowAlert(alert); } } private void RemoveAlert(string alertId) { var alert = m_alertsCollection.SingleOrDefault(a => a.Header.ToString() == alertId); if (alert != null) { m_alertManager.CloseAlert(alert); m_alertsCollection.Remove(alert); } } private void Alert_Closed(object sender, Telerik.Windows.RadRoutedEventArgs e) { var closedAlert = (RadDesktopAlert)sender; closedAlert.Closed -= Alert_Closed; m_alertsCollection.Remove(closedAlert); // Try add next alert var nextAlert = m_alertsCollection.FirstOrDefault(); if (nextAlert != null) { m_alertManager.ShowAlert(nextAlert); } } } }