在 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