2011-01-15 8 views
5

私はシステムトレイで動作するWPFアプリケーションを持っています。トレイのアイコンを右クリックするとポップアップするコンテキストメニューを作成しようとしています。ここでXAMLは次のとおりです。システムトレイの右クリックコンテキストメニュー

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

そしてここでは、コードビハインドである:

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(); 
     } 

私がいる問題は、アイコンを右クリックしたときにということで、それはというエラーをスローしますNotifierContextMenuが見つかりません。私は何が欠けていますか?

答えて

2

私はこれを問題なく使用しました。 MouseDownのイベントハンドラは、実際にはNotifierContextMenuが作成するクラスと同じクラスの一部です。

おそらく、参照しているリソースセットと一致するかどうかを確認するために、リソースをリストするための小さなコードを作成してみてください。

+0

はい、同じクラスです。私はこのアプリでParallel.Foreachコードを実行しています。私はそれがうまく動作するとコメントします。どのようにそれを働かせるためにどのようなアイデア? – Justin

+0

ForEachがそのスレッドで問題を引き起こしている可能性はありますか? BackgroundWorkerを作成してParallel.ForEachの内容を別のスレッドに移動することができますか?私はParallel.ForEachを一度も使用したことはありませんが、MSDNのスレッド関連のものに関連しています。ちょっとした考え。 – CodeWarrior

+0

それはそれを修正しました、ありがとう! – Justin

関連する問題