瓷磚,即案頭顯示的Tile,它的建立和生命週期都可以由使用者自由建立並可以直接存取一個應用程式,還可以為資訊的及時推送帶來很多的方便。在Windows 8中,由SecondaryTile對象負責。
首先瞭解一下它的屬性:
Arguments:它是顯示在案頭Tile上程式定製的一些資訊,當通過Tile啟用一個APP時,可以用該值作一些處理
BackgroundColor:Tile的背景顏色
DisplayName:類似提示資訊,當使用者移到該Tile時,這個資訊會顯示
ForegroundText:字型顏色,只有Dark和Light兩種
Logo:Logo表徵圖,當建立一個方形的瓷磚中使用的標誌形象。當你建立一個正方形或全瓷磚時,這個屬性是必需的
ShortName:這個簡簡訊息是直接顯示在案頭Tile上的
SmalLogo:小表徵圖,在查詢應用程式結果集中,就顯示該小表徵圖
TileId:這是一個標識瓷磚的唯一標識
TileOptions:當給予ShortName時去指定一些選項,其包括四個選項(None,ShowNameOnLogo,ShowNameOnWideLogo,CopyOnDeployment)
WideLogo:在建立寬的Tile時,設定圖片Logo
迫不及待想試一下到底怎麼Pin到案頭了,得先構造一個SecondaryTile對象
我們可以根據不同的需求選擇不同的建構函式
看了一下Create方法,哦,還真多
發現沒,Create與Delete方法是對應的,下面瞭解一下具體的用法
Uri logo = new Uri("ms-appx:///images/squareTile-sdk.png");Uri smallLogo = new Uri("ms-appx:///images/smallTile-sdk.png"); string tileActivationArguments = "timeTileWasPinned=" + DateTime.Now.ToLocalTime().ToString(); SecondaryTile secondaryTile = new SecondaryTile(MainPage.tileId, "Title Test",
"Name of the tile the user sees when searching for the tile", tileActivationArguments, TileOptions.ShowNameOnLogo,logo); secondaryTile.ForegroundText = ForegroundText.Dark; secondaryTile.SmallLogo = smallLogo; bool isPinned = await secondaryTile.RequestCreateForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Right);
看下效果:
移除Tile
SecondaryTile secondaryTile = new SecondaryTile(MainPage.tileId); bool isUnpinned = await secondaryTile.RequestDeleteForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Below);
發現沒有,建立和移除時都會有一個對話似的那種,Create時還可以修改ShortName。
寫的這裡不禁有些疑惑,這裡的NavigateUri哪裡去了,當我從案頭Tile怎麼重新啟用APP,並跳轉到我指定的頁面呢??仔細看了一下MSDN的Sample,原來我們上面的Arguments就是至關重要所在,之所以這裡沒有NavigateUri的概念,是因為Win8 Metro App不像Windows Phone7,它類庫沒有Page的Navigate概念,除非自己封裝。
async protected override void OnLaunched(LaunchActivatedEventArgs args) { Window.Current.Content = new MainPage(args.Arguments); Window.Current.Activate(); }
APP 開啟時,可以接收到Tile的Arguments值,通過該值我們可以去作邏輯處理,或啟用某個頁面,相比Windows Phone 7,給了我們更大的自由選配的空間,不是嗎??
SecondaryTile還有兩個方法也經常用法
Exist(TileId),顧名思義,檢測是否存在對應的Tile
FindAllAsync() 尋找所有的Tile,該方法也重載了多個方法,返回的是IReadOnlyList<SecondaryTile>對象
這就是SecondaryTile的建立與移除,用法相對簡單,當然我們使用Tile的最大好處是可以實現資訊更新及時推送,這就涉及到PushNotification的用法了,先研究下~隨後整理…