Я только начал новый С#/приложение WPF и использую NotifyIcon из WPF Contrib проект. Я могу запустить программу, добавить элемент меню "Выход" в NotifyIcon ContextMenu и связать этот элемент с методом, который просто запускает Application.Current.Shutdown().
Это закрывает главное окно и NotifyIcon, но что-то продолжает работать - от VS, оно не выходит из режима отладки. Что еще работает? Или как я могу проверить?
ИЗМЕНИТЬ
Я только что попробовал добавить кнопку, которая вызывает Application.Current.Shutdown(), и это происходит правильно. Это только при вызове из NotifyIcon, что у меня проблема. Почему это должно быть?
Чтобы уточнить, у меня есть следующий XAML:
<Window x:Class="VirtualBoxManager.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:av="http://schemas.codeplex.com/wpfcontrib/xaml/presentation"
Title="VirtualBox Manager" Height="350" Width="525"
ShowInTaskbar="False" WindowStyle="None">
<Grid>
<av:NotifyIcon Icon="/icon/path"
Text="Virtual Machine Manager"
Name="notifyIcon">
<FrameworkElement.ContextMenu>
<ContextMenu>
<MenuItem Header="Exit" Click="MenuItemExit_Click" />
</ContextMenu>
</FrameworkElement.ContextMenu>
</av:NotifyIcon>
<Button Content="Button" Click="button1_Click" />
</Grid>
И кнопки button1_Click, и MenuItemExit_Click идентичны, но первый успешно выходит из приложения, а второй - нет.
Дальнейшие эксперименты: даже если я переведу Application.Current.Shutdown() в другой метод и вызову вместо этого, добавив слой косвенности, кнопка все еще работает, а значок не будет.
Решение найдено?
Только что нашел эту ветку, решение которой здесь работает. Я не совсем понимаю, что происходит, поэтому, если кто-то хочет объяснить, я буду признателен.