【Win10】探索 Windows 10 10586 之 JumpList(跳转列表)
Windows 10 10586 出來了也挺久的了,應該大部分都從 10240 升級到這個版本了。在 10586 中,微軟添加了 200 多個新的 API,具體 API 的變動,大家可以點擊下面這個鏈接來看:
http://martinsuchan.github.io/ApiPeek/Diffs/win10.10240.to.win10.10586.fulldiff.html
其中不乏許多人都感興趣的 HoloLens 的 API。不過現(xiàn)在連工程機都沒幾個人有的情況下(而且出了我也買不起),我還是看一下有什么實用點的 API 了吧→_→。粗略翻閱一下,JumpList(我稱它為跳轉列表)這個算是相當有用的了。
打開 Visual Studio 2015 Update 1,新建一個空白的 UWP 工程,然后在項目上右鍵 → 屬性。
或許有些小伙伴還是分不清這兩個的含義和區(qū)別,這里我稍微說明下:
目標版本是指你能使用的 API 的版本,JumpList 這個 API 是 10586 的,因此這里如果你選擇的是 10240 就沒法用了。
而最低版本則是用戶能安裝你這個 APP 的版本,只有等于或高于的用戶才能安裝。
那么你又會問了,像上面圖片這樣的,10240 的用戶安裝了這個 APP,然后運行到 10586 的 API 的代碼會怎樣。答案就是會產生一個異常,但是,微軟也給出了相應的解決方案,那就是在調用這些 API 之前先檢查是不是能用,這個類就是 ApiInformation。
由于 ApiInformation 類的方法的參數(shù)都是字符串形式的,我們很容易敲錯,因此在這里,我先強烈推薦一個代碼分析器!!!
https://www.nuget.org/packages/PlatformSpecific.Analyzer/
代碼分析器是 VS 2015 的新功能,是基于 roslyn 的,roslyn 這個東西比較復雜,這里我就不班門弄斧了。像一般的 nuget 包那樣安裝就行了。
安裝完之后是這樣的:
在 MSDN 上我們可以看到,JumpList 目前是只支持 Desktop 的,IsSupported 正是為了檢測這個。https://msdn.microsoft.com/zh-cn/library/mt608936(v=win.10).aspx
那么寫下如下代碼:
可以看見代碼被標注了綠色的波浪線,這個就是我前面為什么要安裝分析器的原因。然后點擊小燈泡后選擇第一項。代碼就會變成下面那樣:
此時波浪線也消失了,這樣 10240 的機器就不會調用到里面代碼,而 10586 或以上的機器就能調用到里面的代碼。
接下來我們可以調用 JumpList 的 LoadCurrentAsync 方法來讀取該 APP 的跳轉列表。
然后可以獲取到 JumpList 的實例了。
JumpList 類有三個實例成員:
Items 屬性是指里面的項,SaveAsync 方法一眼就看出是保存。SystemGroupKind 我先不管放一邊,最后再管它。
然后對 Items 屬性操作一下,最后調用保存:
運行之后,任務欄:
開始菜單:
開始屏幕(也就是開始菜單右側磁貼部分):
然后斷點 App.xaml.cs 之后,點擊 JumpList 的測試這個項后會觸發(fā) OnLaunched 方法。
所以在 OnLaunched 里面處理 JumpList 傳遞過來的參數(shù)跟二級磁貼的方式是相同的。
接下來先回去看一下 JumpListItem,有如下成員:
Arguments 是參數(shù),OnLaunched 中會獲取到這個值。
Description 這個就相當于 ToolTip,如下圖:
DisplayName 就是項顯示的名稱。
GroupName 就是這一項歸屬與哪一個組,如下圖:
如果 GroupName 為空字符串就會被分配在“任務”這里。
Kind 是一個只讀屬性,一個枚舉類型:
指示這個 Item 是項還是分隔線。
Logo 這個很好懂,就是項前面那個小圖標。不過需要注意的是,僅支持 ms-appx:/// 和 ms-appdata:///local/ 這兩個協(xié)議,http:// 是不支持的,但我們可以把圖片下載下來嘛。
RemovedByUser 是一個只讀屬性,我們是沒法修改它的,根據(jù) MSDN 的描述:https://msdn.microsoft.com/zh-cn/library/windows.ui.startscreen.jumplistitem.aspx (Remarks 部分),自定義組中的 Item 右鍵會有一個刪除的選項,此時這個屬性就會被系統(tǒng)設置為 true。
那么用戶點擊這個之后,這個 Item 就會從跳轉列表中消失。但是,也僅僅是用戶看不見,JumpList 實例中的 Item 還是存在,并且 RemovedByUser 是被設置為 true。這個時候我們程序猿就需要從 JumpList 中刪除掉這個 Item 了。
另外特別要注意的是,DisplayName、Description 和 GroupName 這三個屬性是支持本地化的。
假設在項目根目錄建立 Resources.resw 文件,并假設有 LocalName 這么一項,那么可以將屬性值設置為 ms-resource:///Resources/LocalName。
Item 的成員就到此解釋完了。那接下來就把上面 JumpList 先忽略的 SystemGroupKind 屬性給說了。
根據(jù) MSDN 的描述:https://msdn.microsoft.com/zh-cn/library/windows.ui.startscreen.jumplist.aspx (Example 部分)
假設 APP 關聯(lián)了文件協(xié)議的話,APP 是會自動產生 JumpList 的。
而這個 SystemGroupKind 枚舉屬性就是定義這個行為的,None 表示不自動產生,F(xiàn)requent則表示最常用的文件,Recent 則表示最近使用的文件。默認的話是 Recent。
不過需要注意的是,這個屬于系統(tǒng)行為,自動產生的這些項是不包含在 JumpList 的 Item 中的,如果不需要系統(tǒng)提供的話,設置為 None 就好了。
本文就此結束,如果需要 Demo,可以去看微軟官方的 Demo:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/JumpList
JumpList 可以在文件處理型的 APP 中使用(例如云端記事本這種),或者取代二級磁貼(當然 JumpList 只能在 Desktop 上使用這點請注意)。希望大家能活用 JumpList 寫出優(yōu)秀的 APP。
總結
以上是生活随笔為你收集整理的【Win10】探索 Windows 10 10586 之 JumpList(跳转列表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (原创)IconFont(矢量图标字体)
- 下一篇: 备份集中的数据库备份与现有的 '