新博客地址:https://gyrojeff.top,歡迎訪問!
本文為博客自動同步文章,為了更好的閱讀體驗,建議您移步至我的博客👇
本文標題:WPF實現系統托盤
文章作者:gyro永不抽風
發布時間:2020年09月10日 - 13:09
最后更新:2020年09月15日 - 08:09
原始鏈接:http://hexo.gyrojeff.moe/2020/09/10/WPF%E5%AE%9E%E7%8E%B0%E7%B3%BB%E7%BB%9F%E6%89%98%E7%9B%98/
許可協議: 署名-非商業性使用-相同方式共享 4.0 國際 (CC BY-NC-SA 4.0) 轉載請保留原文鏈接及作者!
在WinForm當中,我們可以使用非常輕松地實現系統托盤,在.NET Core的WPF當中,System.Windows.Form
並不能作為命名空間引用,本文將講述如何在WPF中實現系統托盤,以及如何將窗口最小化到系統托盤。
安裝NuGet包
搜索Hardcodet.NotifyIcon.Wpf
並安裝:

編寫ViewModel
1 |
public class NotifyIconViewModel |
其中,雖然代碼中用到了DelegateCommand
類,但實際上並未實際發生作用,只是為了更好地封裝代碼,增加某些特定條件下的可讀性,讀者也可自行將其更改為普通的Command。下面為DelegateCommand
類代碼:
1 |
public class DelegateCommand : ICommand |
在App.xaml中添加托盤信息並關聯ViewModel
在App.xaml添加命名空間:
1 |
xmlns:tb="http://www.hardcodet.net/taskbar" |
如果策略並不是隱藏窗口而是直接關閉窗口,那么為了防止所有窗口都退出導致的程序關閉,我們需要添加額外的一行屬性:
1 |
ShutdownMode="OnExplicitShutdown" |
而不是原來的
OnLastWindowClose
。接下來,我們在
Application.Resource
標簽內添加系統托盤:
1 |
<Application.Resources> |
上面,我們針對不同的操作,綁定了相關的命令。還需要添加一個
ico
文件(這里我添加的是
UIToy.ico
)
在啟動時顯示系統托盤
在App.xaml.cs
當中初始化Taskbar
:
1 |
public partial class App : Application |
然后我們就可以發現,圖標已經在系統托盤當中顯示了。