WinUi3 建立 Windows 通知 示範

包含圖片和文字的 Windows 通知 在 WinUI3 中可以使用 ToastNotification 建立 Windows 通知,通知格式是使用 Xml 定義,內建有幾個範本可以直接使用。

最簡單範例

    
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);
    

只有文字的 Windows 通知

其中 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);
    

有兩個文字的 Windows 通知

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);
    

包含圖片和文字的 Windows 通知

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>

    

留言