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

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

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

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

Любые намеки?

Для WPF нет NotifyIcon.

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

http://sofru.miximages.com/c%23/image13.png

Вы должны использовать элемент управления 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 и загрузите его в не видимое состояние.

На уровне classа:

 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, таких как контекстные меню, всплывающие windows и т. Д.

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

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

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

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

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

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

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

  • Изображение кнопки мыши WPF
  • Как связать TextBlock с ресурсом, содержащим форматированный текст?
  • Обратный вызов, когда свойство зависимостей получает изменение xaml
  • Имеет ли XAML условную директиву компилятора для режима отладки?
  • Как отключить элемент списка ListBox на основе значения свойства?
  • Разница между TargetType = "controlType" и TargetType = "{x: Тип controlType}"
  • Найти элемент WPF внутри DataTemplate в коде
  • Как точно встраиваемые свойства работают в WPF?
  • Как получить ListBox ItemTemplate, чтобы растянуть по горизонтали всю ширину ListBox?
  • Изображение панорамы и масштабирования
  • WPF: привязка ContextMenu к команде MVVM
  • Давайте будем гением компьютера.