【发布时间】: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