Приложение WPF, в котором есть только значок в трее
Я полный новичок WPF и задаюсь вопросом, может ли кто-нибудь дать мне несколько указателей, как написать приложение, которое сведено к минимуму в лоток. Идея состоит в том, что она периодически извлекает RSS-канал и создает Toaster-Popup при появлении новых каналов.
Приложение должно по-прежнему иметь главное окно (по существу, только список, содержащий все записи фида), но это должно быть скрыто по умолчанию.
Я начал читать о XAML и WPF, и я знаю, что StartupUri в App.xaml должен указывать на мое главное окно, но я понятия не имею, как правильно использовать значок SysTray и скрыть главное окно (это также означает, что когда пользователь минимизирует окно, он должен свести к минимуму до лотка, а не панели задач).
- Привязка видимости кнопки к значению bool в ViewModel
- Стили сплава XAML
- WPF: установка ширины (и высоты) в процентах
- Ошибка привязки элемента ElementName
- Как открыть всплывающее окно WPF при нажатии другого элемента управления, используя только разметку XAML?
Любые намеки?
- Что означает «{Binding Path =.}» В привязке WPF?
- Доступ к переменной codebehind в XAML
- Как получить доступ к элементу управления внутри шаблона данных в пользовательском интерфейсе C # Metro в коде
- Как заставить детей StackPanel заполнить максимальное пространство вниз?
- Внедрить INotifyPropertyChanged в сгенерированные classы Entity Framework
- {x: Null} против прозрачного?
- Переключение UWP в Style Setter не работает
- Выберите несколько элементов из DataGrid в проекте MVVM MVPM
Для WPF нет NotifyIcon.
Мой коллега использовал эту свободно доступную библиотеку для хорошего эффекта:
Вы должны использовать элемент управления 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-канала, я использую его для аналогичной цели.