Вы должны использовать элемент управления NotifyIcon из System.Windows.Forms или, в качестве альтернативы, вы можете использовать API значка уведомлений, предоставляемый Windows API. WPF не предоставляет такого эквивалента, и его несколько раз запрашивали в Microsoft Connect.
У меня есть код на GitHub, который использует System.Windows.Forms
компонент NotifyIcon из приложения WPF, код можно посмотреть по адресу https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs
Вот краткие биты:
Создайте окно WPF с ShowInTaskbar = False, которое загружается в невидимом состоянии.
На уровне класса:
private System.Windows.Forms.NotifyIcon notifyIcon = null;
Во время OnInitialize ():
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];
Во время OnLoaded ():
notifyIcon.Visible = true;
И для взаимодействия (показано как notifyIcon.Click и DoubleClick выше):
void notifyIcon_Click(object sender, EventArgs e)
{
ShowQuickLaunchMenu();
}
Отсюда вы можете возобновить использование элементов управления WPF и API, таких как контекстные меню, всплывающие окна и т. Д.
Это так просто. Вам точно не нужно окно WPF для размещения компонента, это просто самый удобный способ ввести его в приложение WPF (поскольку окно, как правило, является точкой входа по умолчанию, определенной через App.xaml), также вы не не требуется WPF Wrapper или сторонний элемент управления, так как компонент SWF гарантированно присутствует в любой установке .NET Framework, которая также имеет поддержку WPF, поскольку он является частью .NET Framework (на котором основаны все текущие и будущие версии .NET Framework.) На сегодняшний день от Microsoft нет никаких признаков того, что поддержка SWF будет прекращена в .NET Framework в ближайшее время.
Надеюсь, это поможет.
Немного сыра, что для получения иконки в трее необходимо использовать компонент Framework до версии 3.0, но, как объяснила Microsoft, концепция System Tray в рамках WPF отсутствует. WPF - это технология презентации, а значки уведомлений - это концепция операционной системы (а не «презентация»).