我完成了我的应用程序,现在我希望将“最小化到系统托盘功能”中。我读了一篇好文章minimize app to system tray。我意识到这些都使用了Windows.Form类。
不幸的是,我使用Windows Presentation Foundation WPF reference来创建应用程序UI。现在我看到WPF中不支持NotifyIcon。我看到CodePlex上有一个开源库,它模拟了NotifyIcon属性WPF Contrib我还没有使用它。
现在我正在解决问题。以下是我的问题: -
a)我不想仅为一个组件合并第三方库。
b)我可以在WPF上没有NotifyIcon的情况下进行最小化功能吗?如果是,那么有人可以给我带来什么样的潜在客户吗?
或许我应该将我的UI还原为使用Windows Forms?
答案 0 :(得分:29)
如果您重新考虑不愿意使用外部组件,我建议使用WPF NotifyIcon。我用过它。它很简单,效果很好。
它不仅仅依赖于相应的WinForms组件,而且是一个纯粹的独立控件,它利用WPF框架的几个功能来显示丰富的工具提示,弹出窗口,上下文菜单和气球消息。
答案 1 :(得分:2)
我今天刚刚看过这篇文章。
作为参考,我也在一段时间后解决了这个问题。它工作得非常好,我偶尔会遇到一些问题,偶尔会出现一些多显示器设置。
这是在GITs和NuGets之前的事情,如果有兴趣,我会把它放在GIT回购中。
答案 2 :(得分:0)
这是一个线程,对我有很大帮助。
https://stackoverflow.com/a/12428063/10305444
public partial class Window : System.Windows.Window{
public Window()
{
InitializeComponent();
System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
ni.Icon = new System.Drawing.Icon("Main.ico");
ni.Visible = true;
ni.DoubleClick +=
delegate(object sender, EventArgs args)
{
this.Show();
this.WindowState = WindowState.Normal;
};
}
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Minimized)
this.Hide();
base.OnStateChanged(e);
}}