Hallo,
wie schon im Titel gesagt, gibt ein Aufruf von JumpList.GetJumpList(App.Current) in meiner Anwendung null zurück, wenn ich das Programm aufrufe. Ich setze dann zwar einfach eine neue Jumplist über JumpList.SetJumpList und diese wird auch von GetJumpList zurückgegeben. Starte ich die Anwendung allerdings neu, kommt wieder null zurück. Außerdem scheint die Apply Methode nicht zu funktionieren, denn das Löschen eines Items funktioniert auch nicht. Hier mein Code zum hinzufügen eines Items:
JumpList jl = JumpList.GetJumpList(App.Current);
if (jl == null)
jl = new System.Windows.Shell.JumpList();
System.Windows.Shell.JumpTask t = new System.Windows.Shell.JumpTask();
t.ApplicationPath = path;
t.IconResourcePath = path;
t.Title = name;
t.CustomCategory = "Links";
t.Description = description;
jl.JumpItems.Add(t);
JumpList.SetJumpList(App.Current, jl);
jl.Apply();
Und hier, wie ich versuche, ein Item zu entfernen:
JumpList jl = JumpList.GetJumpList(App.Current);
if (jl == null)
return;
JumpItem toRemove = null;
foreach (JumpItem i in jl.JumpItems)
{
JumpTask t = i as JumpTask;
if (t != null && t.ApplicationPath == path)
{
toRemove = i;
break;
}
}
if (toRemove != null)
{
jl.JumpItems.Remove(toRemove);
jl.Apply();
}
In allen Beispielen, die ich bisher gesehen habe, wird gar nicht geprüft, ob JumpList.GetJumpList(App.Current) null zurückgibt, es scheint also eigentlich immer was kommen zu müssen. Kann mir jemand sagen, was ich falsch mache?
Vielen Dank,
Big Al
//edit: Ach ja, hier noch der Link zu MSDN: Jumplist Klasse
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
Hallo,
Die Beispiele in der MSDN Lib gehen davon aus, dass es eine, der Applikation zugeordnete, JumpList gibt. Deshalb wird nicht auf null überprüft in den Beispielen - sind halt nur Beispiele 😃. Wenn noch keine definiert wurde, dann gibts halt null zurück. Das ist schon ganz normal. Ich würd in XAML einfach ne Standardjumplist definieren, dann hast du nicht das Problem das da null zurückkommen kann.
Das entfernen müsste an sich klappen. Ich würd mal die Events der JumpList abonieren und gucken ob da irgendwas rejected wird beim setzen der Liste oder mal auch im Debugger gucken ob nach dem Remove das Element auch wirklich entfernt wurde.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hi,
danke für die Antwort! Das Entfernen funktioniert jetzt, ich hatte 2 Anwendungen vertauscht.
Allerdings werden zwar Elemente, die ich in die JumpList lege auch nach dem Programm-Ende angezeigt, aber diese werden gelöscht, wenn ich das Programm neu starte und die Standard-JumpList die alte überschreibt. Muss man also bei jedem Programmstart die Jumplist neu befüllen oder kann man die Werte irgendwie übernehmen?
Viele Grüße,
Big Al
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
AFAIK verwaltet Windows nur die RecentFiles-Jumplist. Wenn du irgendwas anderes machst, musst du dich da komplett selbst drum kümmern.
Hi,
dass Windows nur die RecentFiles selbst einträgt, ist mir klar. Allerdings sind ja Links, die ich in die JumpList eintrage, auch nach dem Beenden des Programms noch in der Liste. Erst wenn ich das Programm neu starte wird die Liste geleert, weil sie durch die im XAML definierte Standard-JumpList ersetzt wird. Ich würde nun gerne die Links, die schon in der Liste sind, in die neue JumpList übernehmen.
Big Al
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.