如何在WPF应用程序中集成吐司通知?

imzjd6km  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(170)

我想在我的wpf应用程序中添加吐司通知。
我已经遵循了微软的Send a local toast notification from desktop C# apps,但我被困在第5步。
我不知道如何让这段代码工作:

// Construct the visuals of the toast (using Notifications library)
ToastContent toastContent = new ToastContentBuilder()
    .AddToastActivationInfo("action=viewConversation&conversationId=5", ToastActivationType.Foreground)
    .AddText("Hello world!")
    .GetToastContent();

// And create the toast notification
var toast = new ToastNotification(toastContent.GetXml());

// And then show it
DesktopNotificationManagerCompat.CreateToastNotifier().Show(toast);

此外,我还添加了<TargetPlatformVersion>10.0</TargetPlatformVersion>到。csproj,对Windows.DataWindows.UI的引用。
在这一点上,我得到了两个错误:
The type 'XmlDocument' is defined in an assembly that is not referenced. You must add a reference to assembly 'Windows.Foundation.UniversalApiContract, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime'
The type 'ToastNotifier' is defined in an assembly that is not referenced. You must add a reference to assembly 'Windows.Foundation.UniversalApiContract, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime'
当我从C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0\Windows.Foundation.UniversalApiContract\8.0.0.0\Windows.Foundation.UniversalApiContract.winmd添加Windows.Foundation.UniversalApiContract作为引用时,我得到了以下错误:
两个“Windows”中都存在类型“ToastNotification”。基金会。通用ApiContract,版本=8。0.0.0,Culture=neutral,PublicKeyToken=null,ContentType=WindowsRuntime' and 'Windows.UI,版本=255。255.255.255,Culture=neutral,PublicKeyToken=null,ContentType=WindowsRuntime'
我该怎么解决?
请注意,我也尝试使用'ready example',但结果相同。

3yhwsihp

3yhwsihp1#

新:

在WPF应用程序中有一种使用UWP吐司通知的方法。
1.将<TargetPlatformVersion>10.0</TargetPlatformVersion>添加到。CSProj
1.如果你安装了任何软件包,点击packages.config文件并选择Migrate packages.config to PackageReference...(重要的一步-这是我错过的东西)
1.现在在Package Manager Console中安装UWP。通知包e.例如:Install-Package Microsoft.Toolkit.Uwp.Notifications -Version 7.0.2Check version
现在,您应该能够使用所有的uwp通知功能。

旧:

正如@Andy在评论中建议的那样,NuGet包已经准备好了:github.com/Federerer/Notifications.Wpf
如果你只是想要一个简单的通知,而没有onClick事件等。您可以使用此解决方案:
1.将<TargetPlatformVersion>10.0</TargetPlatformVersion>添加到。CSProj
1.添加对Windows.UIWindows.Data的引用
1.添加以下用途:using Windows.Data.Xml.Dom; using Windows.UI.Notifications;
1.使用以下代码显示通知:

var message = "Sample message";
var xml = $"<?xml version=\"1.0\"?><toast><visual><binding template=\"ToastText01\"><text id=\"1\">{message}</text></binding></visual></toast>";
var toastXml = new XmlDocument();
toastXml.LoadXml(xml);
var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier("Sample toast").Show(toast);

More info

nhn9ugyo

nhn9ugyo2#

这个文档做得很好,link在这里。
关注Desktop(unpackaged)以了解WPF应用程序的具体细节。

相关问题