消息通知,是一個應用中必不可少的組成部分。Win10下提供了多種消息通知機制,Toast通知只是其中一種。這篇博文和你們分享一下,如何使用Toast通知。c#
上圖是一個基本的Toast通知,那咱們該如何使用它呢?首先你們要知道,Toast 通知是由XML構建的。在Toast通知中提供消息內容及操做(好比回覆,取消等)都是在XML中定義。windows
<toast> <visual> <binding template='ToastGeneric'> <text>Hello World!</text> <text>This is th 3 Example!</text> <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/> </binding> </visual> <actions> <input id='reply' type='text' placeHolderContent='placeHolderContent'/> <action content='reply' arguments='reply' hint-inputId='reply'/> </actions> <audio src='ms-winsoundevent:Notification.Default'/> </toast>
定義完成Toast通知結構後,接着咱們使用 ToastNotification 與 ToastNotificationManager 類完成彈出通知的操做。app
ToastNotification notification = new ToastNotification(xml); ToastNotificationManager.CreateToastNotifier().Show(notification);
Toast通知默認支持四種場景,可經過設置 <toast\>
元素下的 scenario
屬性。ide
default
reminder
: 通知會持續顯示在屏幕上alarm
: 通知會持續顯示在屏幕上而且循環播放聲音inComingCall
: 在Moblie下全屏顯示等屬性 scenario
默認爲 default
, 每一種場景在UI表現與顯示模式有所不一樣。工具
從上述的XML結構中,能夠看出Toast通知結構組成:oop
<toast> <visual/> <actions/> <audio/> </toast>
下面咱們列出一些必要的元素及其必需屬性學習
做用:用於定義Toast通知上展現內容,好比文本或圖片。code
<binding\>
template
:ToastGeneric 是屬性 template
的惟一值。<text\>
<image\>
src
: 數據源,支持 http:// | https:// | ms-appx:/// | ms-appdata:///local/ | file:///placement
: 圖片的顯示位置 inline | appLogoOverride (正文 | 替換App圖標,Toast通知左上角圖標)hint-crop
: 圖片的剪裁 none | circle (默認 | 圓形切割)<toast> <visual> <binding template='ToastGeneric'> <text>Hello World!</text> <text>This is th 2 Example!</text> <image src='ms-appx:///Assets/Images/photo.jpg' placement='appLogoOverride' hint-crop='circle'/> <image src='ms-appx:///Assets/Images/demo.jpg' placement='inline'/> </binding> </visual> </toast>
做用:用於定義Toast通知上提供的操做,好比上圖中的回覆操做。xml
<input\>
id
: 元素的 idtype
: text | selection (文本框 | 選擇框)<selection\>
id
: 元素的 idcontent
: 選擇項的內容<action\>
content
argument
hint-inputId
activationType
: foreground | background | protocol | system<toast> <visual> <binding template='ToastGeneric'> <text>Hello World!</text> <text>This is th 3 Example!</text> <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/> </binding> </visual> <actions> <input id='reply' type='text' placeHolderContent='placeHolderContent'/> <action content='reply' arguments='reply' hint-inputId='reply'/> </actions> </toast>
<toast> <visual> <binding template='ToastGeneric'> <text>Hello World!</text> <text>This is th 4 Example!</text> <image src='ms-appx://Assets/Images/photo.jpg' placement='appLogoOverride'/> </binding> </visual> <actions> <input id='reply' type='selection'> <selection content='selection_1' id='s1'/> <selection content='selection_2' id='s2'/> </input> <action content='reply' arguments='reply'/> <action content='cancel' arguments='cancel'/> </actions> </toast>
做用:用於定義Toast通知彈出時所播放的聲音。對象
src
silent
loop
若是以爲使用 XML 構建Toast通知太複雜太麻煩,那 NotificationsExtensions
就是爲你準備的。
先看一下,NotificationsExtensions
裏包含哪些關於 Toast
通知的類。
若是看過上面使用 XML 構建Toast通知的同窗,確定很是熟悉圖中的類名,多的就不說了,用一個簡單的例子,與你們一塊兒學習 NotificationsExtensions
。
ToastContent toastContent = new ToastContent(); toastContent.Scenario = ToastScenario.Reminder; //<visual> ToastVisual toastVisual = new ToastVisual(); //<text> ToastText toastTitle = new ToastText(); toastTitle.Text = "Hello World ."; ToastText toastTitle2 = new ToastText(); toastTitle2.Text = "This is the 5 Example !"; //</text> //<image> ToastAppLogo toastAppLogo = new ToastAppLogo(); toastAppLogo.Source = new ToastImageSource("/Assets/Images/photo.jpg"); ToastImage toastImageInline = new ToastImage(); toastImageInline.Source = new ToastImageSource("/Assets/Images/demo.jpg"); //</image> toastVisual.BodyTextLine1 = toastTitle; toastVisual.BodyTextLine2 = toastTitle2; toastVisual.AppLogoOverride = toastAppLogo; toastVisual.InlineImages.Add(toastImageInline); //</visual> //<actions> ToastActionsCustom toastActions = new ToastActionsCustom(); ToastTextBox toastTextBox = new ToastTextBox("replyTextBox"); toastTextBox.PlaceholderContent = "輸入回覆消息"; ToastButton replyButton = new ToastButton("回覆","reply"); replyButton.TextBoxId = "replyTextBox"; toastActions.Inputs.Add(toastTextBox); toastActions.Buttons.Add(replyButton); //</actions> //<audio> ToastAudio toastAudio = new ToastAudio(); toastAudio.Src = new Uri("ms-winsoundevent:Notification.Default"); //</audio> toastContent.Visual = toastVisual; toastContent.Actions = toastActions; toastContent.Audio = toastAudio; ToastNotification toastNotification = new ToastNotification(toastContent.GetXml()); ToastNotificationManager.CreateToastNotifier().Show(toastNotification);
使用 NotificationsExtensions
構建 Toast
通知是否是更加的方便和直觀呢。從上面代碼能夠看出,咱們使用 ToastContent
類構建 Toast
通知,對其屬性 Visual
, Actions
, Audio
賦值,完成後調用 GetXml
方法獲取一個 XmlDocument
對象,以後的過程就與原來同樣了。
Notifications Visualizer 能夠協助咱們構建 Toast 通知(固然也能夠構建磁貼),它相似於 Visual Studio Designer,提供實時預覽的功能,是一個提升開發效率的工具,推薦給你們。
Windows Store 下載: https://www.microsoft.com/en-us/store/apps/notifications-visualizer/9nblggh5xsl1
這篇博客與你們一塊兒學習瞭如何快速構建 Toast
通知,固然還有一些細節,好比在 Toast
通知的 XML 結構中某些元素的屬性沒有說起到,若是你們想了解,請參考下面的連接。OK,如何構建你們既然明白了,下一篇博客就該談一下 Toast
通知的交互問題了,期待吧。