7

我们有一个最初为 Windows 7 创建的 Windows 窗体应用程序(与 WPF 相比)。我们正在推进该产品以在 Windows 8 中使用。

对于运行 Windows 8 的用户,是否可以从此 WinForm 应用程序显示 Windows 8 Toast 通知(Windows.UI.Notifications 命名空间)?

我似乎找不到任何例子。我发现的一切都是 WPF 或 Windows 应用商店应用程序——没有示例是 WinForm 应用程序。

4

1 回答 1

4

在win 8下的winform项目中可以使用toast通知。我创建了一个winform项目,添加一个按钮,当按下按钮时,窗口右上角会显示一个toast通知。以下是我所做的。

首先需要通过修改cspoj文件打开win 8平台(winform项目默认关闭),以便添加“Windows”引用。

在桌面项目中,Core 选项卡默认不会出现。您可以通过右键单击解决方案探索中的项目,选择卸载项目,添加以下代码段,然后重新打开项目(右键单击项目选择重新加载项目)来添加 Windows 运行时。当您打开“参考管理器”对话框时,会出现“核心”选项卡。然后您可以将“Windows”引用添加到项目中。

<PropertyGroup>
      <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>

有关更多详细信息,您可以参考此链接(靠近页面的末尾部分)

其次,添加 System.Runtime 引用。

在“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll”中手动添加dll(右键引用,添加引用,浏览)

三、添加toast通知(可以将此代码添加到按钮按下事件中)

这部分代码你可以参考这个链接 注:如果你只想显示toast通知,你不需要关心ShellHelpers.cs。或者如果你喜欢,你可以复制下面的代码。你可能需要相应地添加一些使用,并且可能有一张图片,如果没有,它仍然可以运行。哦,你还需要设置一个APP_ID(只是一个const字符串来表示唯一性)。

private const String APP_ID = "Microsoft.Samples.DesktopToastsSample";

using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
using System.IO;


// Get a toast XML template
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText04);

// Fill in the text elements
Windows.Data.Xml.Dom.XmlNodeList stringElements = toastXml.GetElementsByTagName("text");
for (int i = 0; i < stringElements.Length; i++)
{
    stringElements[i].AppendChild(toastXml.CreateTextNode("Line " + i));
}

// Specify the absolute path to an image
String imagePath = "file:///" + Path.GetFullPath("toastImageAndText.png");
Windows.Data.Xml.Dom.XmlNodeList imageElements = toastXml.GetElementsByTagName("image");
imageElements[0].Attributes.GetNamedItem("src").NodeValue = imagePath;

// Create the toast and attach event listeners
ToastNotification toast = new ToastNotification(toastXml);
//toast.Activated += ToastActivated;
//toast.Dismissed += ToastDismissed;
//toast.Failed += ToastFailed;

// Show the toast. Be sure to specify the AppUserModelId on your application's shortcut!
ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);
于 2013-08-16T08:31:30.800 回答