天天看點

Windows App開發之使用通知與動态磁貼使用Toast通知示例使用動态磁貼示例

前面我們使用了messagedialog來作為彈窗,這裡來介紹一個更加高大上的toast通知。

toast通知本質上動力是由xml來提供的,一開始我還不相信不知道xml原來有這麼大的威力。現在就來看看和toast相關的知識。

1)執行個體化toastnotification類。

2)使用toastnotificationmanager來管理toast通知,包括添加、展示、移除、擷取通知等等。

3)在第一步中的xdoc就是一段xml資料,它從何而來呢?

4)上一步代碼執行個體化了一個xml,但是它沒有資料呀,資料從哪來呢?

5)這段代碼就将一段text導入了xml中。而text資料有很多種擷取方式。在下文中自然會提到。

toast的xml模闆有許多,我們可以直接來擷取它們。用枚舉和強大的var即可。

那麼就正式開工了,因為重複的屬性太多了我就大概設定了2個style資源。

下面是第一部分用于生成toast通知。

背景代碼也蠻容易的,利用上面講的就好了。

模闆是這樣用的……

Windows App開發之使用通知與動态磁貼使用Toast通知示例使用動态磁貼示例
Windows App開發之使用通知與動态磁貼使用Toast通知示例使用動态磁貼示例

在src中填入圖檔的路徑也可以在toast中顯示圖像哦,趕緊試試吧……

接下來是第二段啦,和前面的很是類似……

上面代碼中的“ms-winsoundevent:notification.default”都是填到src中的用于設定聲音,還可以在loop、silent中設定是否循環以及是否靜音,那到底該怎麼用呢?應該将這些屬性全部都填入到xml中。

上面用的xmlcontent也要先定義出來,一開始設定為empty就好。

isloop和issilent屬性都可以借助于三目運算符在checkbox中擷取來。

當然,考慮得更加周到些,使用者可以在還沒有輸入通知内容就點了顯示toast通知按鈕,對此用三目運算符也是極好的選擇。

這些準備工作都寫好了以後呢就該設定toast通知了,和上面的toast1類似哦,大家試試。

可是這些通知都沒有時間性可言,因為有時候我們需要定在一個時間來執行toast通知。這自然也是可以實作的。

先作如下界面設計。

背景代碼如下。

在這個小程式中因為側重于講解定時而非toast的通知樣式,是以就選用了比較簡單的toasttext01模闆。而後找出text節點,并向該節點寫入内容。最後就是建立toast通知了。

同樣為了防止使用者沒有在textbox中輸入時間或輸入了錯誤格式的時間比如“5秒”而做了try、catch異常檢測。當然了,在實際産品中,這裡可就要做得更加完美了,時間用textbox來輸入并不是一件好事,而應用我們前面介紹的timepicker。

給這3段程式來張全家福吧~

Windows App開發之使用通知與動态磁貼使用Toast通知示例使用動态磁貼示例

動态磁貼是什麼,相信大家用了這麼久的windows 8/8.1/10早就非常了解了吧。

像什麼小磁貼、中磁貼、寬磁貼、大磁貼,還有這裡的應用商店logo等,大家在下面根據不同的分辨率選擇合适的圖檔就好啦。

Windows App開發之使用通知與動态磁貼使用Toast通知示例使用動态磁貼示例

下面來做一個更新磁貼頁面的功能,這是頁面xml部分。

在背景代碼的main函數中,擷取tiletemplatetype枚舉并綁定到combobox上。

下面的代碼和前面的toast真的非常類似,是以我才把這兩節連在一起來寫了。button按鈕的click事件中,和之前一樣建一個xml,然後加載到tilenotification類的執行個體中。最後就是tileupdatemanager類,也就是磁貼更新。

當然了,如果你的app不滿足于一個磁貼,你也可以建立第二個磁貼喲!

依舊和toast通知的xml類似,它也有好多屬性的……

arguments:使用該字元串參數在通過次要磁貼啟動應用程式時會傳遞給application類的onlaunched方法,這樣一來應用程式就可以根據傳入的參數來執行特定的操作。

backgroundcolor:設定磁貼的背景色。

displayname和shortname:設定顯示在磁貼上的文本。

logo等:設定磁貼的圖示,用uri。

foregroundtext:磁貼上文本的顔色,可用的選項有深色、淺色等。

tileid:設定磁貼的唯一辨別id,建立新磁貼前用secondarytile.exists判斷是否已經存在。

在添加第二磁貼的button的click事件中:

如果希望點選第二磁貼導航到特定的頁面,就需要重寫該頁面的onnavigatedto方法。

這裡的參數”second”就是上面設定那個arguments哦,它的作用就在于這裡呢。