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

Простой?

if (input.ToUpper() == input)
{
    // string is all upper
}
141
задан Michael Stum 24 September 2009 в 15:59
поделиться

3 ответа

110
ответ дан 23 November 2019 в 23:10
поделиться

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

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

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

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

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

Это маленький сыр, что вы должны использовать pre-3. 0 Framework Component, чтобы получить значок в области уведомлений, но, по понятным причинам, как объяснила Microsoft, в рамках WPF нет концепции панели задач. WPF - это технология представления, а значки уведомлений - это концепция операционной системы (а не «презентации»).

102
ответ дан 23 November 2019 в 23:10
поделиться

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

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

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

48
ответ дан 23 November 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: