WPF 桌面应用程序,Windows 10 通知 Toast 2016(UWP 社区工具包)
Posted
技术标签:
【中文标题】WPF 桌面应用程序,Windows 10 通知 Toast 2016(UWP 社区工具包)【英文标题】:WPF Desktop App, Windows 10 Notification Toast 2016 (UWP Community Toolkit) 【发布时间】:2017-02-06 05:54:56 【问题描述】:我正在尝试使用我的 WPF C# 桌面应用程序显示 Windows 10 Toast。
遗憾的是,非 UWP 或应用商店应用中有关 Windows 10 通知的 API 和一般支持似乎非常有限且混乱。 最近发布了UWP Community Toolkit,这似乎试图让我们的事情变得更容易。 还有这个商店应用程序,Notifications Visualizer,它有助于制作这样的 Toast:
我继续尝试使用 C# 和 UWP 社区工具包提供的 API 生成 Toast。
使用 Microsoft.Toolkit.Uwp.Notifications;
ToastContent toastContent = new ToastContent()
Visual = new ToastVisual()
BindingGeneric = new ToastBindingGeneric()
Children =
new AdaptiveText()
Text = "Matt sent you a friend request"
,
new AdaptiveText()
Text = "Hey, wanna dress up as wizards and ride around on our hoverboards together?"
,
AppLogoOverride = new ToastGenericAppLogo()
Source = "https://unsplash.it/64?image=1005",
HintCrop = ToastGenericAppLogoCrop.Circle
;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(toastContent.GetContent());
var toast = new ToastNotification(xmlDoc);
ToastNotificationManager.CreateToastNotifier(AppId).Show(toast); // Display toast
不幸的是,无论我尝试什么,我似乎都无法获得相同的结果,由于某种原因,图像总是丢失:
我发现的有关这些通知的大多数信息要么已过时,要么毫无用处。 有人可以对此有所了解吗? 谢谢。
【问题讨论】:
提问者很清楚这是一个桌面应用程序。不过,不确定 UWP 社区工具包命名空间是否应该在老式桌面应用程序上编译/运行,但考虑到该工具包是专为 UWP 设计的。 @BoltClock,我不熟悉 UWP,但 AFAIK 这本质上只是传递给底层通知 API 的 XML 代码。这不应该将整个事情解耦并使其几乎无关紧要的是哪种 App 正在调用该函数? 我做了更多研究,看起来 Microsoft.Toolkit.Uwp.Notifications 实际上有用于 .NET 的库,而不仅仅是 WinRT/UWP。我假设您使用的是 .NET Standard 库。 “UWP 社区工具包”就这么多……无论如何,是的,它应该将通知格式与 API/平台分离。不幸的是,我还没有更新我的任何 WPF 应用程序以支持新的通知 API,所以我无法进一步评论。 其实我只是拿了 Microsoft.Toolkit.Uwp.Notifications Nuget 包,因为我找不到任何专门标记为 .NET Standard 的库。 当我尝试使用 Microsoft.Toolkit.Uwp.UI.Controls Nuget 包时,我收到一条错误消息,告诉我里面没有与 .NET Framework 兼容的项目。由于 .Notification 包安装良好,我猜这意味着它还包含 .NET Standard 库。 【参考方案1】:仅使用 UWP 工具包无法做到这一点
在 .NET Standard 中,这似乎只能通过两个步骤来实现,其中一个步骤超出了 UWP Toolkit 的范围。
.NET 标准应用需要 COM 服务器和特殊开始菜单快捷方式才能正确使用 Windows 10 操作中心。 UWP 应用似乎不需要或已经具有等效功能。 这两个步骤应该在应用程序安装期间执行,这显然是 Microsoft UWP Toolkit 不参与的事情。 因此,单独的 UWP 工具包不仅不能而且永远无法提供完整的解决方案,以独立的方式显示适用于 .NET Standard 的 Windows 10 Toast。
替代品
我发现了一个不起眼的 C# Project on Github,其名称中包含“Microsoft”,它可以在没有 UWP 工具包的情况下开箱即用。 它要求您提供 GUID 和 AppID 字符串,然后用于注册 COM 服务器并创建快捷方式。
this library 看起来更简洁,它似乎提供了相同的功能。我还要测试一下。
这两种解决方案都应该与 Microsoft 的 NotificationsExtensions 库一起使用,它是 UWP 工具包的前身,有助于生成用于制作 Toast 的 XML 代码。
【讨论】:
以上是关于WPF 桌面应用程序,Windows 10 通知 Toast 2016(UWP 社区工具包)的主要内容,如果未能解决你的问题,请参考以下文章
如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?
Windows 10 Toast Notifications桌面应用程序