上一篇博文记录了如何发送Toast通知WPF使用Windows API发送Toast通知。这篇博文浅谈一下如何处理Toast通知。

完整代码见:Simple-WPF/ToastNotification

在程序加载时,我们绑定ToastNotificationManagerCompat.OnActivated 这个事件来处理Toast信息的用户交互。

1
ToastNotificationManagerCompat.OnActivated += ToastNotificationManagerCompat_OnActivated;

事件处理函数中,我们只简单地演示把Toast信息提供的参数打印出来

1
2
3
4
5
6
private void ToastNotificationManagerCompat_OnActivated(ToastNotificationActivatedEventArgsCompat e) { ToastArguments args = ToastArguments.Parse(e.Argument); ValueSet userInput = e.UserInput; Application.Current.Dispatcher.Invoke(new Action(() => { MessageBox.Show("Toast activated. Args:" + e.Argument + " State:" + ToastNotificationManagerCompat.WasCurrentProcessToastActivated()); })); }

_vrMFUeGT8w9pPd_qije6SuFGGDD_Xg4lz67q9Cyx54.png

我们可以看到正常情况下State一直是False,但是当Toast信息存在,但是发送这个Toast信息的程序被关闭了,再次点击Toast信息系统会自动启动应用程序并ToastNotificationManagerCompat.WasCurrentProcessToastActivated() 将反回为True

Bii5UZQbVxo__fSfGhddlRnxf1_DEK3X5V86Zp3HdSw.png