Можно ли использовать NotifyIcon в WPF?

Я хочу минимизировать приложение в системном трее с помощью WPF. Является ли" NotifyIcon " единственным способом достичь этого результата? Если да, то какое пространство имен требуется для использования "NotifyIcon" в WPF?

Если возможно с "NotifyIcon", пожалуйста, дайте подсказку, как я могу использовать это в моем Mainwindow?

мое главное окно,

public partial class MonthView : MetroWindow
{

    public DateTime SelectedDate { get; set; }

    public MonthView()
    {

            InitializeComponent();
            calMain.DisplayDate = DateTime.Today;
            Globals._globalController = new AppController();
            Globals._globalController.appTaskManager.setupLocal();
            Globals._globalController.setMonthViewWindow(this);

    }

    public void calItemSelectedDate(object sender, SelectionChangedEventArgs e)
    {
        DateTime d;
        if (sender is DateTime)
        {
            d = (DateTime)sender;
        }
        else
        {
            DateTime.TryParse(sender.ToString(), out d);
        }

        SelectedDate = d;

        ShowActivity(d);
     }

    public void ShowActivity(DateTime date)
    {
        DayView Activity = new DayView(date);
        Activity.Show();
        this.Hide();
    }

    private void SetButton_Click(object sender, RoutedEventArgs e)
    {
        SettingsView set = new SettingsView();
        set.Show();
        this.Hide();
    }

 }

3 ответов


NotifyIcon не реализован в WPF, как в формах, но вы все равно можете использовать Windows Form NotifyIcon, он проживает в


Да, это возможно, и я использовал его с успехом в мой личный проект. Существует превосходный контроль, написанный Филиппом Суми http://www.hardcodet.net/projects/wpf-notifyicon. Я использовал точно, что один, и он работает очень здорово и выглядит красиво (субъективно).

image

просто обратите внимание: обратите внимание условия лицензирования, проверить, если вы можете использовать его в код.


вы можете установить код для NotifyIcon в приложении.код XAML.cs

using System.Drawing;

namespace DDD
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        System.Windows.Forms.NotifyIcon nIcon = new System.Windows.Forms.NotifyIcon();
        public App()
        {
            nIcon.Icon = new Icon(@"path to ico");
            nIcon.Visible = true;
            nIcon.ShowBalloonTip(5000, "Title", "Text",  System.Windows.Forms.ToolTipIcon.Info);
            nIcon.Click += nIcon_Click;
        }

        void nIcon_Click(object sender, EventArgs e)
        {
            //events comes here
            MainWindow.Visibility = Visibility.Visible;
            MainWindow.WindowState = WindowState.Normal;
        }
    }
}

и в вашем главном окне.код XAML.cs:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
        this.Visibility = Visibility.Hidden;
    }

убедитесь, что Window_Closing привязан к событию закрытия главного окна.

Если вы "закроете" свое главное окно, видимость окна будет установлена на скрытую, но ваше приложение все еще будет работать. Просто нажмите на NotifyIcon в области уведомлений и окно обратно.