winforms 缺少Windows.UI.通知

j5fpnvbx  于 2022-11-17  发布在  Windows
关注(0)|答案(2)|浏览(141)

我想从this example创建简单的吐司通知到windows 10中的操作中心。但是我在步骤2中遇到了问题:

using Windows.UI.Notifications;

它不见了。但是我花了很多时间找它,却没有结果。我真的不知道在哪里可以找到它,或者至少下载它。
我尝试过:
1.经过长时间的搜索,我在C:\Windows\System32中找到了Windows.UI.dll,但是当我尝试将它作为引用添加到项目中时,我得到了这个错误。即使我尝试复制它并使其完全可访问,也没有任何变化

1.我试着重新安装.Net(我用的是4.5.2)
1.安装的Windows 10 SDK
1.尝试使用全局导入
1.已添加

<PropertyGroup>
      <TargetPlatformVersion>10.0</TargetPlatformVersion>
</PropertyGroup>

1.添加了System.Runtime.dll参考
示例代码可能对您无用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Toolkit.Uwp.Notifications;
using Microsoft.QueryStringDotNET;
using Windows.UI.Notifications;

namespace MessagerClient.Notifications {
    class DefaultWindowsNotification {

        public static void notificationTest() {
            string title = "Andrew sent you a picture";
            string content = "Check this out, Happy Canyon in Utah!";
            string image = "http://blogs.msdn.com/something.jpg";
            string logo = "ms-appdata:///local/Andrew.jpg";
            ToastVisual visual = new ToastVisual() {

                BindingGeneric = new ToastBindingGeneric() {

                    Children =
                    {
                        new AdaptiveText()
                        {
                            Text = title
                        },

                        new AdaptiveText()
                        {
                            Text = content
                        },

                        new AdaptiveImage()
                        {
                            Source = image
                        }
                    },

                    AppLogoOverride = new ToastGenericAppLogo() {
                        Source = logo,
                        HintCrop = ToastGenericAppLogoCrop.Circle
                    }
                }
            };
            Console.WriteLine("NOTIFICATION");
            //Can`t use because of Windows.UI library
            ToastNotificationManager.CreateToastNotifier().Show(visual);
        }
    }
}
polhcujo

polhcujo1#

您必须与Visual Studio进行艰苦的斗争,才能在Winforms应用中使用这些UWP协定。您使用了错误的TargetPlatformVersion,一开始就犯了错误,很难从中恢复。要采取的完整步骤:
使用文本编辑器编辑.csproj文件,记事本即可。插入以下内容:

<PropertyGroup>
       <TargetPlatformVersion>10.0.10586</TargetPlatformVersion>
  </PropertyGroup>

假设您的计算机上安装了10586 SDK版本。目前,这些版本变化很快。通过使用资源管理器查看C:\Program Files(x86)\Windows Kits\10\Include,仔细检查,您会看到该目录中列出了已安装的版本。
打开Winforms项目,使用Project〉Add Reference〉Windows选项卡〉勾选Windows.DataWindows.UI协定。再次添加引用,并使用Browse选项卡选择System.Runtime。我在C:\Program Files(x86)\Reference Assemblies\Microsoft\Framework. NETFramework\v4.6.1\Facades中选择了一个。此引用显示了一个警告图标,不确定它试图表达什么,但似乎没有任何副作用。
测试方法是在窗体上拖放一个按钮,双击添加Click事件处理程序。最基本的代码:

using Windows.UI.Notifications;
...

private void button1_Click(object sender, EventArgs e) {
    var xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
    var text = xml.GetElementsByTagName("text");
    text[0].AppendChild(xml.CreateTextNode("Hello world"));
    var toast = new ToastNotification(xml);
    ToastNotificationManager.CreateToastNotifier("anythinggoeshere").Show(toast);
}

通过使用不同的ToastTemplateType添加图像或多行文本进行修饰。请记住,您的程序只能在Win10计算机上运行。

ulydmbyx

ulydmbyx2#

如果有人碰巧发现了这一点,请参阅这个类似但更新的帖子-
Toast Notifications in Win Forms .NET 4.5
阅读Stepan Hakobyan在底部的评论。
基本上,我看到了同样的事情。这段代码运行时,我可以一行一行地执行它,没有例外,但吐司通知从未在Form应用程序中显示。

相关问题