2011-01-15 23 views
5

Ich habe eine WPF-App, die in der Taskleiste ausgeführt wird. Ich versuche ein Kontextmenü zu erstellen, das angezeigt wird, wenn Sie mit der rechten Maustaste auf das Symbol in der Taskleiste klicken. Hier ist die XAML:Rechtsklick-Kontextmenü in der Taskleiste

<Window.Resources> 
     <ContextMenu x:Key="NotifierContextMenu" Placement="MousePoint"> 
      <MenuItem Header="Exit" Click="Menu_Exit"/> 
     </ContextMenu> 
    </Window.Resources> 

Und hier ist der Code-behind:

void NotifyIcon_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
     { 
      if (e.Button == System.Windows.Forms.MouseButtons.Right) 
      { 
       var menu = this.FindResource("NotifierContextMenu") as ContextMenu; 
       menu.IsOpen = true; 
      } 
     } 

     protected void Menu_Exit(object sender, RoutedEventArgs e) 
     { 
      NotifyIcon.Visible = false; 
      Application.Current.Shutdown(); 
     } 

Das Problem, das ich habe, ist, dass, wenn Sie mit der rechten Maustaste auf das Symbol, ein Fehler wirft, dass NotifierContextMenu kann nicht gefunden werden. Was vermisse ich?

Antwort

2

Ich habe das selbst ohne Probleme versucht. Ihr Event-Handler für das MouseDown ist tatsächlich Teil derselben Klasse, in der NotifierContextMenu erstellt wurde, oder?

Versuchen Sie vielleicht, einen kleinen Code zu erstellen, um die Ressourcen aufzulisten, um zu sehen, ob Sie den Ressourcensatz zuordnen können, auf den er sich bezieht.

+0

Ja, sie sind in der gleichen Klasse. Ich führe Parallel.Foreach Code in dieser App, wenn ich das auskommen, funktioniert es gut. Irgendeine Idee, wie es funktioniert? – Justin

+0

Jede Möglichkeit, dass das ForEach Probleme in diesem Thread verursacht? Können Sie versuchen, einen BackgroundWorker zu erstellen und die Parallel.ForEach-Inhalte in diese einzufügen, um sie auf einen anderen Thread zu verschieben? Ich habe nie Parallel.ForEach verwendet, aber es ist mit einem Haufen Threading in MSDN verwandt. Nur ein Gedanke. – CodeWarrior

+0

Das hat es behoben, danke! – Justin

Verwandte Themen