我正在用 C# 制作一个 WPF 应用程序,我需要在其中显示最近的文档历史记录(就像它发生在 word、excel 甚至 Visual Studio 中一样),显示最近打开的 5 个或 10 个文档的列表。我完全不知道我应该如何去做。请帮忙。请善待和温柔...我是一个业余编码员,现在很难消化高科技谈话!:)
6 回答
WPF4中的 JumpList 很棒。这就是我需要做的所有事情:
<Application
x:Class="MyApp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<Application.Resources>
</Application.Resources>
<JumpList.JumpList>
<JumpList ShowRecentCategory="True"/>
</JumpList.JumpList>
</Application>
我解决这个问题的想法(作为初学者)是将所有文件路径保留到给定最大容量的队列中,并在运行时将它们添加到菜单项中......
您可以只保留用户打开的文档的列表。程序退出时存储列表,程序启动时加载。您可能可以在程序设置中存储一个列表,或者您可以将其写入文件(纯文本或 xml 可以正常工作)。
您必须通过保留对“最近的文档”的引用,然后从其集合中MenuItem
添加和删除s 来动态地为“最近的文档”创建子菜单。这里有一个讨论:Add new menuitem to menu at runtime。MenuItem
Items
上面由 Shoban 链接的库看起来像一组为您执行此操作的类。但是,它适用于winforms。如果您使用的是 wpf,您可能必须自己编写(尽管在某处可能有预制的),但 winforms 将为您提供一个良好的起点。
然后,您还可以使用适用于 .Net 的 Windows API 代码包在 win7 的任务栏中创建跳转列表。
Gagan,我最近在 WPF C# 中创建了一个最近的文件菜单,这就是我所做的:
-> 要启用跳转列表功能和开始菜单最近的文件菜单,我使用了 Windows API shell 例程,如下所示:
[DllImport("shell32.dll")] //shell 例程启用 jumplist 和 recenfiles public static extern void SHAddToRecentDocs( UInt32 uFlags, [MarshalAs(UnmanagedType.LPWStr)] String pv);
并这样称呼它: SHAddToRecentDocs(0x00000003, mFilePath);
-> 然后为了显示最近的文件菜单,我使用了一个 xml 文件,在其中存储了最近的文件,并在菜单中解析并显示了最近的文件。
您可能对WPF 应用程序框架 (WAF)的Writer示例应用程序感兴趣。它展示了如何使用和实现在文件菜单和起始页上显示的最近文件列表。