private void btn_TestPopup_Click(object sender, RoutedEventArgs e) { var TrayIcon = ((Core)Application.Current).TrayIcon; var viewModel = new NotificationViewModel(((MainWindowViewModel)DataContext).TaskList[0]); var baloon = new NotificationView(viewModel); //TrayIcon.ShowBalloonTip("MyBaloon", "Yam", Hardcodet.Wpf.TaskbarNotification.BalloonIcon); TrayIcon.ShowCustomBalloon(baloon, System.Windows.Controls.Primitives.PopupAnimation.Slide, null); }
/// <summary> /// Обрабатывает принятие оповещения /// </summary> public void AcceptNotification() { // Для начала закрываем окно оповещения. // Затем проверим наличие нового оповещения в очереди и, если оно там есть, то // отобразим его lock (_allWorkLocker) { _taskbarIcon.CloseBalloon(); Task task; if (_notificationQueue.TryDequeue(out task)) { Notify(task); } else { // Удалим объекты вью и вью-модели (для освобождения памяти) _currentNotificationViewModel = null; _currentNotificationView = null; _isNotificationActive = false; } } }
/// <summary> /// Непосредственно отображает оповещение /// </summary> /// <param name="task"></param> private void Notify(Task task) { // Отобжараем оповещение Application.Current.Dispatcher.Invoke(() => { // Подготовим оповещение _currentNotificationViewModel = new NotificationViewModel(task); _currentNotificationView = new NotificationView(_currentNotificationViewModel); // Отобразим оповещение //_taskbarIcon.ShowCustomBalloon( // _currentNotificationView, // System.Windows.Controls.Primitives.PopupAnimation.Slide, // 5000); var bal = new FancyBalloon(); _taskbarIcon.ShowCustomBalloon(bal, PopupAnimation.Slide, null); }); }
public NotificationView(NotificationViewModel viewModel) { InitializeComponent(); DataContext = viewModel; }