在之前寫過(guò)的《Windows 7 任務(wù)欄開發(fā)系列》中我們通過(guò)Visual Studio 2008 借助微軟提供的Windows API Code Pack 對(duì)應(yīng)用程序的任務(wù)欄進(jìn)行開發(fā),即將到來(lái)的Visual Studio 2010 為我們提供了更方便的開發(fā)方式,新版本的WPF 4 只需要通過(guò)XAML 代碼即可實(shí)現(xiàn)Windows 7 任務(wù)欄的特性。本篇將針對(duì)JumpList(跳轉(zhuǎn)列表)進(jìn)行介紹,同時(shí)體驗(yàn)下.NET Framework 4.0 的新功能。
用XAML 編寫JumpList
在WPF 4 中開發(fā)任務(wù)欄的方便之處就在于可以使用XAML 直接編寫相應(yīng)的功能代碼,無(wú)須再使用API 編寫繁瑣的C# 程序。首先打開App.xaml 文件加入我們想要的JumpList 程序,其中JumpList 類為創(chuàng)建跳轉(zhuǎn)列表提供了方法,JumpTask 類可以創(chuàng)建列表中的鏈接?梢詫(duì)比一下通過(guò)API 編寫的JumpList,很明顯XAML 的方式更為簡(jiǎn)單清晰。
<Application x:Class="Win7TaskbarDemo.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> <JumpList.JumpList> <JumpList ShowFrequentCategory="True" ShowRecentCategory="True"> <JumpTask ApplicationPath="notepad.exe" CustomCategory="Microsoft Tools" Description="Start Notepad" Title="Notepad" IconResourcePath="notepad.exe" IconResourceIndex="0" /> <JumpTask ApplicationPath="mspaint.exe" CustomCategory="Microsoft Tools" Description="Start Paint" Title="Paint" IconResourcePath="mspaint.exe" IconResourceIndex="0" /> <JumpTask ApplicationPath="http://gnielee.cnblogs.com/" CustomCategory="Blog Link" Description="Go to {GnieTech}" Title="Gnie's Blog" IconResourcePath="C:\\Program Files\\Internet Explorer\\iexplore.exe" /> </JumpList> </JumpList.JumpList> </Application>
通過(guò)閱讀上面的程序,很容易看出我們加入了兩個(gè)應(yīng)用程序(“記事本”、“畫版”)和一個(gè)“網(wǎng)站鏈接”,其中的屬性參數(shù)使用起來(lái)也十分方便。
用C# 編寫JumpList
上面使用XAML 方式編寫了一個(gè)簡(jiǎn)單的JumpList,當(dāng)然C# 同樣也能實(shí)現(xiàn)相同的效果。首先在MainWindow 中拖入兩個(gè)Button:
<Window x:Class="Win7TaskbarDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="211" Width="363" Icon="/Win7TaskbarDemo;component/Resources/App.ico"> <Grid> <Button Content="Clear All Tasks" Height="23" HorizontalAlignment="Right" Margin="0,29,59,0" Name="ClearBtn" VerticalAlignment="Top" Width="89" Click="ClearBtn_Click" /> <Button Content="Add New Task" Height="23" HorizontalAlignment="Left" Margin="60,29,0,0" Name="AddBtn" VerticalAlignment="Top" Width="93" Click="AddBtn_Click" /> </Grid> </Window>
為它們分別添加點(diǎn)擊事件,其中一個(gè)是為JumpList 增加“計(jì)算器”鏈接,另一個(gè)是將所有鏈接清空。創(chuàng)建JumpList 時(shí)需要使用System.Windows.Shell 命名空間,是不是有點(diǎn)像API 中的Microsoft.WindowsAPICodePack.Shell。
private void AddBtn_Click(object sender, RoutedEventArgs e) { JumpTask jumpTask = new JumpTask(); //Create a new Calculator JumpTask jumpTask.ApplicationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "calc.exe"); jumpTask.IconResourcePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "calc.exe"); jumpTask.Title = "Calculator"; jumpTask.Description = "Start Calculator"; jumpTask.CustomCategory = "New Microsoft Tools"; //Add Calculator to JumpList JumpList jumpList = JumpList.GetJumpList(App.Current); jumpList.JumpItems.Add(jumpTask); jumpList.Apply(); } private void ClearBtn_Click(object sender, RoutedEventArgs e) { JumpList jumpList1 = JumpList.GetJumpList(App.Current); jumpList1.JumpItems.Clear(); jumpList1.Apply(); }
分別點(diǎn)擊兩個(gè)按鍵后的效果: