Можно ли использовать 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. Я использовал точно, что один, и он работает очень здорово и выглядит красиво (субъективно).
просто обратите внимание: обратите внимание условия лицензирования, проверить, если вы можете использовать его в код.
вы можете установить код для 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 в области уведомлений и окно обратно.