在 WinUI3 中可以使用 ToastNotification 建立 Windows 通知,通知格式是使用 Xml 定義,內建有幾個範本可以直接使用。
其中 ToastTemplateType.ToastText01 的格式如下:
ToastTemplateType.ToastText02 的格式如下:
ToastTemplateType.ToastImageAndText02 的格式如下:
有了這些範例應該很容易舉一反三做出符合自己需求的 Windows 通知了吧!
註: 修改通知標題的方式為修改 Package.appxmanifest 檔案中的 DisplayName
最簡單範例
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
var toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("文字文字"));
var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
其中 ToastTemplateType.ToastText01 的格式如下:
<toast>
<visual>
<binding template="ToastText01">
<text id="1"></text>
</binding>
</visual>
</toast>
兩個文字的範例
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
var toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("標題"));
toastTextElements[1].AppendChild(toastXml.CreateTextNode("內容"));
var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
ToastTemplateType.ToastText02 的格式如下:
<toast>
<visual>
<binding template="ToastText02">
<text id="1"></text>
<text id="2"></text>
</binding>
</visual>
</toast>
包含圖片的通知範例
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText02);
Debug.WriteLine("xmlString: " + toastXml.GetXml());
var toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("標題"));
toastTextElements[1].AppendChild(toastXml.CreateTextNode("內容"));
string imagePath = @"C:\Users\ruyut\Pictures\ruyut2.ico";
var toastImageElements = toastXml.GetElementsByTagName("image");
((XmlElement)toastImageElements[0]).SetAttribute("src", imagePath);
((XmlElement)toastImageElements[0]).SetAttribute("alt", "notification image");
var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
ToastTemplateType.ToastImageAndText02 的格式如下:
<toast>
<visual>
<binding template="ToastImageAndText02">
<image id="1" src=""/>
<text id="1"></text>
<text id="2"></text>
</binding>
</visual>
</toast>
有了這些範例應該很容易舉一反三做出符合自己需求的 Windows 通知了吧!
註: 修改通知標題的方式為修改 Package.appxmanifest 檔案中的 DisplayName
<?xml version="1.0" encoding="utf-8"?>
<Package>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="Ruyut WinUI3 Demo">
</uap:VisualElements>
</Application>
</Applications>
</Package>
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com