Как заполнить ContextMenuStrip в XAML?

478
08 июня 2017, 04:57

Я создал приложение WPF c NotifyIcon для работы в трее.

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 главного окна тривиален и нерелевантен.

Я хочу создать ContextMenuStrip для NotifyIcon в XAML (Я знаю как это сделать в коде C#, но не хочу).

Вот что у меня получилось.

<WindowsFormsHost>
    <wf:ContextMenuStrip x:Name="MyContextMenuStrip" TopLevel="False">
        <wf:ContextMenuStrip.Items>
            <!-- Как сюда добавлять элементы -->
        </wf:ContextMenuStrip.Items>
    </wf:ContextMenuStrip>
</WindowsFormsHost>

Вопрос в том, как добавлять элементы в ContextMenuStrip.Items c Name и обработчиком события Click в XAML?

Answer 1

Получил ответ на англ. SO.

Вопрос в том, как добавлять элементы в ContextMenuStrip.Items c Name и обработчиком события Click в XAML?

Попробуйте это:

<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!");
}
READ ALSO
Что надо знать, чтобы начать учить asp.net mvc? [требует правки]

Что надо знать, чтобы начать учить asp.net mvc? [требует правки]

Сейчас изучаю C#, заинтересовала платформа aspnet mvc

469
Как обработать исключение IndexOutOfRangeException?

Как обработать исключение IndexOutOfRangeException?

В задании указано создать 2 класса: в 1-ом создать и проинициализировать массив из 10 элементов типа int, конструктор по умолчанию и индексатор;...

452
System.ArgumentOutOfRangeException: &#39;minValue не может быть больше maxValue.&#39;

System.ArgumentOutOfRangeException: 'minValue не может быть больше maxValue.'

Только учусь программированию и столкнулся с вот такой проблемой:

288
Метод шифрования гаммированием

Метод шифрования гаммированием

Добрый деньЯ реализовывал шифрование в лабораторной работе на языке c# методом гаммирования, в моей реализации значения складываются по модулю...

665