Windows 10 UWP 12 of N: Jump List ( From 10586 )

  • 229
  • 0
  • UAP
  • 2021-04-30

Jump list 是從7開始帶進Windows的Desktop功能,藉由的右鍵點擊釘選在Taskbar上的App icon會長出的Popup上給予幾個Task進行簡易的操作!需要的OS以及SDK需要支援Windows 10 10586才行!

先看看把看看傳統的Win32 App可以使用的Jumplist

可以清楚看到IE可以使用Private mode以及開新分頁的兩個Task。

接者來看看怎樣時做這個功能在UWP上吧!

先開啟專案的時候要先確認系統是否為10586的秋季更新!和SDK是否有支援到10586的SDK

以上是設定的APP顯示為10586組態,1511版本。


接者調整專案的目標版本為10586,這邊我依舊保留最低版本為10240。

接下來寫C#的程式碼來介紹這個功能拉

private bool _IsSupport;
_IsSupport = JumpList.IsSupported();

而一開始須先判斷是否目前執行的平台能夠支援Jumplist!

public async Task EnableListAsync()
{
            var list = await JumpList.LoadCurrentAsync();
            list.SystemGroupKind = JumpListSystemGroupKind.Frequent;
            await list.SaveAsync();
}

public async Task DisableJumpListAsync()
{
            var list = await JumpList.LoadCurrentAsync();
            list.SystemGroupKind = JumpListSystemGroupKind.None;
            list.Items.Clear();
            await list.SaveAsync();
}

接者再把Jumplist給啟動起來,需要說明一下的是JumpListGroup的類型!這邊使用的是JumpListSystemGroupKind.Frequent,這個Enum還有None和Recent。如果使用Frequent的畫建立出來的JumpList的Group會是Task(工作),而如果使用的是Recent則是讓系統紀錄所產生的常用群組。然後要取消使用這樣功能就是將SystemGroupKind設定成None並把List內的Item清空就可以了。

接者我使用AppbarButton來建立以及清除JumpList

public async void AppBarButton_Click(object sender, RoutedEventArgs e)
        {
            if(sender is AppBarButton)
            {
                var appbarbtn = sender as AppBarButton;
                switch(appbarbtn.Label)
                {
                    case "Add":
                        var list = await JumpList.LoadCurrentAsync();
                        if (list != null)
                        {
                            var task1 = JumpListItem.CreateWithArguments("task 1", "task 1 displayName");
                            task1.Logo = new Uri("ms-appx:///Assets/task1Image.png");
                            list.Items.Add(task1);
                            var separator = JumpListItem.CreateSeparator();
                            list.Items.Add(separator);
                            var task2 = JumpListItem.CreateWithArguments("task 2", "task 2 displayName");
                            task2.Logo = new Uri("ms-appx:///Assets/task2Image.png");
                            list.Items.Add(task2);
                            await list.SaveAsync();
                        }
                        break;
                    case "Clear":
                        await DisableJumpListAsync();
                        break;
                }
            }
        }

這樣就可以產生兩個Task並用Separator來區隔開來功能群組!

接者來看看實做出來的樣子

上圖是依尚未新增JumpList的時候

新增JumpListGroup進去的時候~

上圖就是調整Debug非啟動APP並點task 1 displayName 啟動APP的時機點是在App.xaml.cs的OnLaunched事件中,並可以看到LaunchActivatedEventArgs內的Arguments屬性會帶上JumpListItem的argument!這樣就可以進行進一步的邏輯處理。

PS:使用Recent的所啟動的JumpList需要在設定個人化中的開始, 把最下面的功能打

 


***以上Code以及說明都有可能隨著Windows 10 的版本以及Visual Studio 2015版本有所調整!***

參考資料 MSDN, Windows Dev Center

下次再分享Windows 10 的新技術拉~