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

完整代码见:Simple-WPF/ToastNotification

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

ToastNotificationManagerCompat.OnActivated += ToastNotificationManagerCompat_OnActivated;

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

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