我在使用 WPF 时遇到了一些问题。当我将标签添加到我的 app.xaml 时,我可以在跳转列表中看到该任务,但是当我尝试将一个项目添加到最近的文件列表时,我添加的新项目永远不会出现。如果我创建一个名为“Recent”的 CustomCategory 并手动添加一个 JumpTask,它就会显示出来。但是,如果我重新启动应用程序,新添加的 JumpTask 不再存在,只是测试任务。
澄清
最初,我遇到了 JumpList.AddToRecentCategory 根本无法正常工作的问题。它永远不会添加到最近的列表中。Gayot Fow 帮助解决了这个问题。但是问题仍然存在,如果我手动添加一个带有自定义类别的 JumpTask,那么所有最近的文件都会清除,如果我打开一个文件并调用 addToRecent,它不会显示出来。如果我删除在 xaml 中声明的 JumpTask,则会显示最近的文件。
XAML:
<JumpList.JumpList>
<JumpList ShowRecentCategory="True">
<JumpTask Title="Test" Description="Test"
Arguments="/test" CustomCategory="Tasks" />
</JumpList>
</JumpList.JumpList>
添加最近项目的 C# 代码
var jumpList = JumpList.GetJumpList(Application.Current);
if (jumpList == null) return;
//create a jump task
var jt = new JumpTask();
jt.Title = System.IO.Path.GetFileNameWithoutExtension(FileName);
jt.Description = jt.Title;
jt.CustomCategory = jt.Title;
jt.ApplicationPath = FileName;
//JumpList.AddToRecentCategory(jt);
jt.CustomCategory = "Recent";
jumpList.JumpItems.Add(jt);
jumpList.Apply();
无论我是从 Visual Studio 2013(更新 2)运行应用程序,还是从调试目录运行 exe,都会发生这种情况。有谁知道为什么这不起作用?
我在某处读到有关 ClickOnce 部署的应用程序无法正常工作的信息,但在部署之前我什至无法让它工作。
任何帮助将不胜感激,谢谢。
更新
Gayot Fow 的回答引导我用静态方法解决问题
JumpList.AddToRecentCategory(jt);
什么都不做。
我改变了我的 AddToRecent 代码如下:
var jumpList = JumpList.GetJumpList(Application.Current);
if (jumpList == null) return;
string title = System.IO.Path.GetFileNameWithoutExtension(FileName);
string programLocation = Assembly.GetCallingAssembly().Location;
var jt = new JumpTask
{
ApplicationPath = programLocation,
Arguments = FileName,
Description = FileName,
IconResourcePath = programLocation,
Title = title
};
JumpList.AddToRecentCategory(jt);
jumpList.Apply();
问题
尽管最近文件的问题已解决,但我仍然无法使其与名为“任务”的自定义类别共存
在我的应用程序启动时,我调用此代码:
var jumpList = JumpList.GetJumpList(Application.Current);
if (jumpList != null)
{
string title = "New Document";
string programLocation = Assembly.GetCallingAssembly().Location;
var jt = new JumpTask
{
ApplicationPath = programLocation,
Arguments = "/new",
Description = title,
IconResourcePath = programLocation,
Title = title
};
jumpList.JumpItems.Add(jt);
jumpList.Apply();
}
一旦调用它,“最近”类别就会消失,并且任何添加最近项目的调用都不会执行任何操作。但是,我确实看到了我的“新文档”任务:/
我接近这个完全错误吗?谢谢