8

我正在尝试使用我的WPF C# 桌面应用程序显示 Windows 10 Toasts 。

遗憾的是,非 UWP 或应用商店应用程序中有关 Windows 10 通知的 API 和一般支持似乎非常有限且混乱。最近发布了UWP 社区工具包,它似乎试图让我们的事情变得更容易。还有这个商店应用程序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

不幸的是,无论我尝试什么,我似乎都无法得到相同的结果,由于某种原因,图像总是丢失:

在此处输入图像描述

我发现的有关这些通知的大多数信息要么已过时,要么无用。有人可以对此有所了解吗?谢谢你。

4

1 回答 1

10

仅使用 UWP Toolkit 无法做到这一点

看起来对于 .NET Standard,这只能通过两个步骤来实现,其中一个步骤超出了 UWP Toolkit 的范围。

.NET 标准应用程序需要 COM 服务器和特殊的开始菜单快捷方式才能正确使用 Windows 10 操作中心。UWP 应用似乎不需要或已经具有等效功能。这两个步骤应该是在应用程序安装过程中执行的,这显然是微软 UWP Toolkit 不参与的事情。因此,仅凭 UWP Toolkit 不仅无法而且永远无法提供完整的 Windows 10 Toast 显示解决方案以自包含的方式用于 .NET Standard。

备择方案

我在 Github 上发现了一个不起眼的C# 项目,其名称中包含“Microsoft”,它可以在没有 UWP 工具包的情况下开箱即用。它要求您提供一个 GUID 和一个 AppID 字符串,然后用于注册 COM 服务器并创建快捷方式。

一个看起来更干净的替代方案是这个库,它似乎提供了相同的功能。我仍然需要测试它。

这两种解决方案都应与 Microsoft 的NotificationsExtensions库一起使用,它是 UWP 工具包的前身,有助于生成 Toast 的 XML 代码。

于 2016-10-06T12:17:46.920 回答