我从Windows 8.1开始使用桌面应用程序的Toast通知,但在Windows 10中使用新的操作中心,我遇到了一些意想不到的行为。
当用户不对吐司做任何事情时,它会在没有前往行动中心的情况下消失(ToastNotification.Dismissed
为ToastDismissalReason.TimedOut
)。我不知道它是否与我在win32应用程序中使用它有关,但是Windows Universal App中的相同Toast在超时时会进入操作中心。
有一点需要注意的是,我没有为我的win32应用程序注册AppUserModelID,就像在W8.1中需要它一样,它似乎不再是强制性的。我仍然使用注册的身份证进行测试,并且我有相同的popblem。
那么,我怎能阻止吐司在超时时不进入动作中心?
这是一个重现问题的极简主义代码(控制台应用程序):
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;
namespace ToastDesktop
{
internal class Program
{
/// Add in the .csproj in the <PropertyGroup/> where <TargetFrameworkVersion/> is:
/// <TargetPlatformVersion>10.0.10240.0</TargetPlatformVersion>
///
/// Reference to add :
/// - Windows.UI
/// - Windows.Data
private static void Main(string[] args)
{
string xml = $@"
<toast>
<visual>
<binding template='ToastGeneric'>
<text>Some title</text>
<text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</text>
</binding>
</visual>
</toast>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
ToastNotification toast = new ToastNotification(doc);
toast.Tag = "tag";
toast.Group = "group";
ToastNotificationManager.CreateToastNotifier("ToastDesktop").Show(toast);
}
}
}
感谢您的帮助。
编辑:我在the msdn blog post上发布了这个涉及主题的错误,我得到了确认,当超时时它应该留在行动中心并且可能是一个错误。
答案 0 :(得分:3)
Win32应用程序需要设置一个COM服务器,以便在Action Center中保留Toast:http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/10/15/quickstart-handling-toast-activations-from-win32-apps-in-windows-10.aspx
答案 1 :(得分:1)
COM方法的替代方法是为您的应用set a registry key。在您的情况下,将irssi
替换为ToastDesktop
。