首页 > 解决方案 > WinForms 应用程序中的 Windows 10 ToastNotification

问题描述

我正在尝试展示ToastNotification带有来自 WinForms 项目的自适应内容的 Windows 10 (UWP)。我已经:

单击表单上的按钮时,将运行以下代码:

XElement element = new XElement("toast",
    new XElement("visual",
        new XElement("binding",
            new XAttribute("template", "ToastGeneric"),
            new XElement("text", "Line1"),
            new XElement("text", "Line2"),
            new XElement("text", "Line3")
        )
    ),
    new XElement("actions",
        new XElement("action",
            new XAttribute("content", "Button1"),
            new XAttribute("arguments", "action=Button1")
        ),
        new XElement("action",
            new XAttribute("content", "Button2"),
            new XAttribute("arguments", "action=Button2")
        )
    )
);

var xml = new Windows.Data.Xml.Dom.XmlDocument();
xml.LoadXml(element.ToString());

var toast = new ToastNotification(xml);

ToastNotificationManager.CreateToastNotifier("Demo.ToastApp").Show(toast);

没有通知出现。不会引发异常并且Failed事件不会触发。

但是,如果我将 XML 更改为以下内容(即使用旧版 toast 模板),则通知有效:

XElement element = new XElement("toast",
    new XElement("visual",
        new XElement("binding",
            new XAttribute("template", "ToastText04"),
            new XElement("text", new XAttribute("id", 1), "Line1"),
            new XElement("text", new XAttribute("id", 2), "Line2"),
            new XElement("text", new XAttribute("id", 3), "Line3")
        )
    )
);

这与我读到的关于 toast 的内容相反(请参阅桌面应用程序的 Toast 通知),它说 ToastGeneric应该使用,并且ToastText04不能从桌面应用程序使用旧模板(例如 )。

我想要自适应内容(特别是操作,因此我的应用程序可以根据单击的内容做出不同的响应)并且我看不到我做错了什么。谁能指出我正确的方向?

(注意:我想避免在快捷方式中设置我的 System.AppUserModel.ID,因为此功能最终将驻留在类库中,并且无论调用应用程序如何安装,我都希望它能够工作)

标签: c#winformsuwpwindows-10

解决方案


推荐阅读