Sunwayking

导航

[原创]在WPF 4.0中运用Windows7新特性之一:JumpList

本来这篇文章是在百度空间发布的,无奈百度空间管理太烂,我明明没有违反他的破协议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)才可以生效.最终效果见右图.

posted on 2009-11-07 18:56  Sunwayking  阅读(652)  评论(0编辑  收藏  举报