【问题标题】:WPF Desktop App, Windows 10 Notification Toast 2016 (UWP Community Toolkit)WPF 桌面应用程序,Windows 10 通知 Toast 2016(UWP 社区工具包)
【发布时间】: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 库。

标签: c# wpf windows-10 windows-10-desktop windows-community-toolkit


【解决方案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 代码。

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 2021-06-20
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多