本来这篇文章是在百度空间发布的,无奈百度空间管理太烂,我明明没有违反他的破协议3.3,他却硬说说违反了,我真闹不懂了,难道发一些技术文章就违反了所谓的"把博客用作商业用途"条例嘛?!!!真是生气啊,可怜我的博客被封了,我去投诉百度,到头来人家不仅不给解封还对我说谢谢!真是没有天理!不过好像现在又给解封了,我真是不敢用百度博客了,功能单一管理真烂,客服又跟复读机一样一点都不把我们消费者(虽然我们没有直接消费,但是我们给他带来了了无数利润这一点却不假)当做"人"看,哎!远离百度,珍爱生命,真是一点都不假啊,我再也不支持百度产品了!现在把这篇博文移动到博客园,算是做一个备份吧,不然哪天百度脑残又说我"把博客用作商业用途"了,再给我封掉,我的文章就拿不出来了.鄙视一下百度,o(╯□╰)o!
在Visual Studio 2010 Beta2中,WPF为我们带来了一系列新特性,其中一个就是对Windows7特性的完美支持.
本篇介绍的内容是如何给WPF程序添加JumpList支持.在WPF中添加JumpList有两种方法,一种是以XAML的形式添加,一种是运用C#代码动态添加.下面先介绍一下JumpList的结构:
JumpList大体由两部分构成,第一部分是位于最底部右键系统菜单,这一部分是不可以自定义的;第二部分是位
于右键菜单上方的各个类别(Category).这里说明一下,第二部分可以有多个类别,常见的有"最近(Recent)"和"常用(Frequent)"这两个类,当然还有譬如"任务(Task)"等这些类别(Category).其实,无论什么类别,都是可以让用户自定义的,您在看了后半部分的文章之后完全可以自己定义一个类别,叫自己的名字做自己的事情.类别(Category)中的每一项叫做跳转列表项(JumpItem).大家可以对照右图理解一下JumpList的结构.
第一种XAML方式:
下方代码红色部分即为关键代码:
<Application x:Class="GameStarter.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>
<JumpList ShowRecentCategory="True" ShowFrequentCategory="True">
<JumpTask CustomCategory="My Category" Title="Locate Me" Arguments="/LocateMe" />
</JumpList>
</JumpList.JumpList>
</Application>
这里,WPF为JumpItem预设了两个特例,一个是JumpTask,一个是JumpPath.前者特指跳转到程序,后者特指跳转到文件(这一点MSDN上有明确说明).Argument参数指传递给可执行文件的参数.我想其他参数都很好理解,这里就不多赘言了.最后的效果请参见右图.
第二种方式C#动态构造:
下方代码红色部分即为关键代码:
using System.Windows.Shell;
public partial class MainWindow : Window
{
private JumpList jumpList;
public MainWindow()
{
InitializeComponent();
initJumpList();
}
private void initJumpList()
{
jumpList = new JumpList();
JumpList.SetJumpList(Application.Current, jumpList);
JumpTask jumpTask = new JumpTask();
jumpTask.Title = jumpTask.Description = "记事本";
jumpTask.CustomCategory = "DocumentApps";
jumpTask.ApplicationPath = "notepad.exe";
jumpList.JumpItems.Add(jumpTask);
jumpList.Apply();
}
...此处省略其他无关代码...
}
这里也不须多说,只是有一点需要提醒,就是初始化完JumpList,一定要应用(Apply)才可以生效.最终效果见右图.