Laden...

JumpList.GetJumpList(App.Current) gibt null zurück

Erstellt von Big Al vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.349 Views
B
Big Al Themenstarter:in
342 Beiträge seit 2006
vor 13 Jahren
JumpList.GetJumpList(App.Current) gibt null zurück

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.

6.862 Beiträge seit 2003
vor 13 Jahren

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.

B
Big Al Themenstarter:in
342 Beiträge seit 2006
vor 13 Jahren

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.

2.891 Beiträge seit 2004
vor 13 Jahren

AFAIK verwaltet Windows nur die RecentFiles-Jumplist. Wenn du irgendwas anderes machst, musst du dich da komplett selbst drum kümmern.

B
Big Al Themenstarter:in
342 Beiträge seit 2006
vor 13 Jahren

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.