【发布时间】:2023-11-27 08:32:01
【问题描述】:
我在使用 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();
}
一旦调用,“最近”类别就会消失,任何添加最近项目的调用都不会执行任何操作。但是,我确实看到了我的“新文档”任务:/
我是不是完全错了? 谢谢
【问题讨论】:
-
跳转列表在debug下不可靠,因为不是同一个exe。
-
谢谢,我已经考虑过了,但是当我从文件夹中手动运行 exe 时,也会发生同样的事情。在那种情况下,它是同一个 EXE
-
之后,尝试“以管理员身份运行”
-
好的,我尝试以管理员身份运行,还是一样。 xaml 中声明的任务替换了我手动添加的任何任务,例如最近的文件,而 JumpList.AddToRecentCategory 静态方法完全没有任何作用。我可能只需要推出自己的 MRU 并跳过 JumpList,虽然我真的很想要。
-
我没有其他想法。我可以从我的跳转列表中添加一些代码,但我不知道它有什么用。