Приложение WPF, которое имеет только значок в трее



Я полный новичок WPF и задаюсь вопросом, Может ли кто-нибудь дать мне несколько указателей, как написать приложение, которое начинает сворачиваться в лоток. Идея заключается в том, что он периодически извлекает RSS-канал и создает всплывающее окно тостера, когда появляются новые каналы.



приложение должно по-прежнему иметь главное окно (по сути, просто список, содержащий все записи фида), но это должно быть скрыто по умолчанию.



Я начал читать о XAML и WPF, и я знаю, что StartupUri в приложении.xaml должен указывать на мое главное окно, но я понятия не имею, как правильно сделать значок SysTray и скрыть главное окно (это также означает, что когда пользователь сворачивает окно, оно должно сворачиваться в лоток, а не на панель задач).



какие-то намеки?

636   3  

3 ответов:

там нет NotifyIcon для WPF.

мой коллега использовал эту свободно доступную библиотеку для хорошего эффекта:

http://www.hardcodet.net/uploads/2009/04/image13.png

вы должны использовать NotifyIcon управления из системы.Окна.Формы, или в качестве альтернативы вы можете использовать API Notify Icon, предоставляемый API Windows. 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.Щелчок и двойной щелчок выше):

void notifyIcon_Click(object sender, EventArgs e)
{
    ShowQuickLaunchMenu();
}

здесь вы можете возобновить использование элементов управления WPF и API, таких как контекстные меню, всплывающие окна и т. д.

Это очень просто. Вам точно не нужно окно WPF для размещения компонента, это просто самый удобный способ ввести его в приложение WPF (поскольку окно обычно является точкой входа по умолчанию, определенной через приложение.xaml), кроме того, вам не нужна оболочка WPF или сторонний элемент управления, так как компонент SWF гарантированно присутствует в любой платформе .NET Framework установка, которая также поддерживает WPF, поскольку она является частью .NET Framework (на которой основаны все текущие и будущие версии .NET Framework.) На сегодняшний день нет никаких указаний от Microsoft, что поддержка SWF будет удалена из .NET Framework в ближайшее время.

надеюсь, что это поможет.

это немного сыра, что вы должны использовать компонент Pre-3.0 Framework, чтобы получить значок в трее, но понятно, как Microsoft объяснила это, нет понятия системного трея в рамках WPF. WPF-это технология презентации, а значки уведомлений-это концепция операционной системы (а не "презентация").

недавно у меня была такая же проблема. К сожалению, NotifyIcon-это только Windows.На данный момент, если вы хотите использовать его, вам придется включить эту часть фреймворка. Я думаю, это зависит от того, насколько вы пурист WPF.

Если вы хотите быстрый и простой способ начать проверить это WPF NotifyIcon control на проекте кода который вообще не полагается на WinForms NotifyIcon. Более поздняя версия кажется быть доступным на сайте автора и пакета NuGet. Это кажется мне самым лучшим и чистым способом до сих пор.

  • подробные подсказки, а не текст
  • контекстные меню и всплывающие окна WPF
  • поддержка команд и маршрутизированные события
  • гибкая привязка данных
  • богатые сообщения воздушного шара, а не сообщения по умолчанию, предоставляемые ОС

проверить. Он поставляется с удивительным примером приложения тоже, очень проста в использовании, и вы можете иметь большой вид Windows Live Messenger стиль WPF всплывающие окна, подсказки и контекстные меню. Идеально подходит для отображения RSS-канала, я использую его для аналогичной цели.

Comments

    Ничего не найдено.