c# - WinForms 应用程序中的 Windows 10 ToastNotification
问题描述
我正在尝试展示ToastNotification
带有来自 WinForms 项目的自适应内容的 Windows 10 (UWP)。我已经:
- 在我的 .csproj 文件中设置
TargetPlatformVersion
为 10.0.18362.0 Windows.winmd
添加了对和的引用System.Runtime.dll
"Demo.ToastApp"
使用 Win32函数设置显式 System.AppUserModel.ID ( )SetCurrentProcessExplicitAppUserModelID
(在我的Main
方法的最开始)
单击表单上的按钮时,将运行以下代码:
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,因为此功能最终将驻留在类库中,并且无论调用应用程序如何安装,我都希望它能够工作)
解决方案
推荐阅读
- reactjs - react设置状态后如何清除输入值?
- mariadb - 太长的更改/创建表 InnoDB
- php - PHP模块和PHP扩展有什么区别?
- asynchronous - 是否有“简单等待”的异步等待方法
- powershell - Powershell Split 功能在 VSTS 发布管道中不起作用
- hiveql - 何时在 hive QL 中使用 sort By 子句
- angular - npm 在安装 `angular-in-memory-web-api` 时显示错误
- python - 如何在标签上绘制图像
- image - 如何在 MATLAB 中将图像连接到一个矩阵中?
- random - 机器人框架:下拉的随机选择