2017-06-06 3 views
0

NotifyIconとWPFアプリケーションを作成しました。XAMLでContextMenuStripを塗りつぶす方法は?

public partial class MainWindow : Window 
{ 
    public NotifyIcon NotifyIcon { get; } = new NotifyIcon 
    { 
     Icon = Properties.Resources.status_on_ico, 
     Visible = true 
    }; 

    public MainWindow() 
    { 
     InitializeComponent(); 

     NotifyIcon.ContextMenuStrip = MyContextMenuStrip; 
     NotifyIcon.Click += NotifyIcon_Click; 
    } 

    private void Window_Closing(object sender, CancelEventArgs e) 
    { 
     e.Cancel = true; 
     WindowState = WindowState.Minimized; 
    } 

    private void NotifyIcon_Click(object sender, EventArgs e) 
    { 
     Show(); 
    } 
} 

メインウィンドウのXAMLは特別なものではなく、関連性はありません。

XAMLでContextMenuStripNotifyIconを作成したいと思います(私はそのコードをどうやって行うのか分かりませんが、それは望みません)。

ここは私が管理しているものです。

<WindowsFormsHost> 
    <wf:ContextMenuStrip x:Name="MyContextMenuStrip" TopLevel="False"> 
     <wf:ContextMenuStrip.Items> 
      <!-- How to add items here? --> 
     </wf:ContextMenuStrip.Items> 
    </wf:ContextMenuStrip> 
</WindowsFormsHost> 

質問はXAMLでNameClickイベントハンドラでContextMenuStrip.Itemsに項目を追加する方法ですか?

+0

あなたは[WPF用hardcodetのネイティブMotifyIconライブラリ](http://www.hardcodet.net/wpf-notifyicon/comment-を使用して検討していますページ3)?あなたが他のもののためにそれを使用している場合を除き、winforms interopは必要ありません。 –

+0

はい、エンタープライズアプリケーションで使用するのに十分な堅牢性があるかどうかはわかりません。正直言って私はWPF純粋ではないし、いくつかの組み込みWindowsフォームコントロール 私のアプリで私を混乱させないでください。 –

+0

私の質問に対する答えが「不可能」ならば、私は解決策の背後にあるコードを使用します(これは簡単です)。 'NotifyIcon'は私のアプリではほとんどコードではありません。 –

答えて

2

質問は、XAMLで名前とクリックイベントハンドラを持つContextMenuStrip.Itemsにアイテムを追加する方法ですか?

これを試してみてください:

<WindowsFormsHost> 
    <wf:ContextMenuStrip x:Name="MyContextMenuStrip" TopLevel="False"> 
     <wf:ContextMenuStrip.Items> 
      <wf:ToolStripMenuItem Text="test1" Click="It_Click" /> 
      <wf:ToolStripMenuItem Text="test2" /> 
     </wf:ContextMenuStrip.Items> 
    </wf:ContextMenuStrip> 
</WindowsFormsHost> 

private void It_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("click!"); 
} 
関連する問題