我正在使用Toast通知开发Windows 8 metro风格的应用程序。 (C#+ xaml组合) 我查看了MS metro样式示例代码,并尝试将其应用到我的项目中, 看起来我使用的代码完全相同,但我不知道为什么它不起作用..
(没有错误,它构建成功但只是不起作用。)
有一个按钮。
当button_click
事件发生时,我想弹出一个Toast通知。
namespace Application1
{
public sealed partial class BlankPage : Page
{
public BlankPage()
{
this.InitializeComponent();
Scenario2Init();
}
void Scenario2Init()
{
toastTest.Click += (sender, e) => { ToastAlarm(true); };
}
void ToastAlarm(bool loopAudio)
{
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
// Toasts can optionally be set to long duration by adding the 'duration' attribute
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
((XmlElement)toastNode).SetAttribute("duration", "long");
// This XmlNodeList will have two items since the template we are using has two text fields.
XmlNodeList stringElements = toastXml.GetElementsByTagName("text");
stringElements.Item(0).AppendChild(toastXml.CreateTextNode("Long Duration Toast"));
XmlElement audioElement = toastXml.CreateElement("audio");
if (loopAudio)
{
// Long-duration Toasts can optionally loop audio using the 'loop' attribute
audioElement.SetAttribute("src", "ms-winsoundevent:Notification.Looping.Alarm");
audioElement.SetAttribute("loop", "true");
stringElements.Item(1).AppendChild(toastXml.CreateTextNode("Looping audio"));
}
else
{
audioElement.SetAttribute("src", "ms-winsoundevent:Notification.IM");
}
toastNode.AppendChild(audioElement);
ToastNotification toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
//Scenario2OutputText.Text = toastXml.GetXml();
}
}
}
如果我点击按钮,则没有任何反应。为什么呢?
答案 0 :(得分:3)
你的代码对我来说是正确的;我现在没有Win8和我在一起所以我无法测试它。但是,如果您在VS中的“Toast Capable”字段中启用了Toast,则可能需要检查应用程序的清单。希望这会有所帮助。
答案 1 :(得分:3)
您是否在Package.appxmanifest中启用了“Toast capable”?
答案 2 :(得分:1)
我认为,有两个原因,
首先可能与您的应用程序的Toast功能有关。对于Package.appxmanifest
ToastCapable="true"
第二个是在本地计算机而不是模拟器中运行应用程序。我发现Simulator无法生成Toast通知。
答案 3 :(得分:0)
我认为你可以使用Xml String
// Create the toast content by direct string manipulation.
// See the Toasts SDK Sample for other ways of generating toasts.
string toastXmlString =
"<toast duration=\"long\">\n" +
"<visual>\n" +
"<binding template=\"ToastText02\">\n" +
"<text id=\"1\">Alarms Notifications SDK Sample App</text>\n" +
"<text id=\"2\">" + alarmName + "</text>\n" +
"</binding>\n" +
"</visual>\n" +
"<commands scenario=\"alarm\">\n" +
"<command id=\"snooze\"/>\n" +
"<command id=\"dismiss\"/>\n" +
"</commands>\n" +
"<audio src=\"ms-winsoundevent:Notification.Looping.Alarm5\" loop=\"true\" />\n" +
"</toast>\n";