2017-06-06 6 views
0

J'ai créé l'application WPF avec NotifyIcon pour travailler dans un bac.Comment remplir ContextMenuStrip en XAML?

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 de la fenêtre principale n'a rien de spécial et n'est pas pertinent.

Je veux créer ContextMenuStrip de NotifyIcon en XAML (je sais comment faire le code derrière mais je ne le veux pas).

Voici ce que j'ai géré.

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

La question est de savoir comment ajouter des éléments à ContextMenuStrip.Items avec Name et Click gestionnaires d'événements en XAML?

+0

Avez-vous envisagé d'utiliser [bibliothèque MotifyIcon native de hardcodet pour WPF] (http://www.hardcodet.net/wpf-notifyicon/comment- page-3)? Aucune winforms interop nécessaire, sauf si vous l'utilisez pour d'autres choses. –

+0

Oui, mais vous ne savez pas s'il est assez robuste pour l'utiliser dans l'application d'entreprise. Pour être honnête, je ne suis pas puriste WPF et certains contrôles intégrés de Windows Forms dans mes applications ne me confondez pas. –

+0

Si la réponse à ma question est "c'est impossible", je m'en tiendrai au code derrière la solution (ce qui est trivial). 'NotifyIcon' est un petit morceau de code dans mon application. –

Répondre

2

La question est de savoir comment ajouter des éléments à ContextMenuStrip.Items avec nom et cliquez sur les gestionnaires d'événements en XAML?

Essayez ceci:

<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!"); 
}