がりらぼ

WindowsRuntimeの応援ブログ

Toast通知を楽にしたい


デバッグにも重宝するToast通知
使いたいなと思ってみてみると

// テンプレートのタイプを取得
    var template = ToastTemplateType.ToastText01;
    // テンプレートを取得(XMLDocument"
    var toastXml = ToastNotificationManager.GetTemplateContent(template);
    // textタグを取得(ここに文字列が入る)
    var textTag = toastXml.GetElementsByTagName("text").First();
    // 子要素に文字列を追加
    textTag.AppendChild(toastXml.CreateTextNode("こんにちは通知"));

    // Notifierを作成してShowメソッドで通知
    var notifier = ToastNotificationManager.CreateToastNotifier();
    notifier.Show(new ToastNotification(toastXml));

※かずきさんのブログより流用
トースト通知 - かずきのBlog@hatena

なんでToast通知出すのに6行も書かなきゃならんのだ...もうちょっと簡単にできないのか...
どうやらTost通知はXMLで定義される形のとなっているので
XMLの要素を操作しないとTost通知させてくれないようです。

2行ぐらいで通知したい!!と思ったのでかずきさんのを参考に簡易クラスを作成

public class ToastText
    {
        XmlDocument xmlDoc;
        public ToastText(string message,ToastTemplateType type)
        {
            xmlDoc = ToastNotificationManager.GetTemplateContent(type);
            var textTag = xmlDoc.GetElementsByTagName("text").First();
            textTag.AppendChild(xmlDoc.CreateTextNode(message));
            
        }

        public void Show()
        {
            var notifier = ToastNotificationManager.CreateToastNotifier();
            notifier.Show(new ToastNotification(xmlDoc));
        }
    }

あとは使う側で

var toast = new ToastText("└( ^ω^ )」", ToastTemplateType.ToastText02);
toast.Show();

第二引数でToastTypeを指定できます。2行以上表示しないとあまり変わりませんが。

ちょっとした通知に重宝するToastなので簡易に使いたいものですね。
あとToastのXmlわからん