[英]Minimizing Application to system tray using WPF ( Not using NotifyIcon )
我已經完成了應用程序的制作,現在我想為其添加“最小化到系統托盤功能”。 我讀了一篇不錯的文章, 將應用程序最小化到系統托盤 。 我意識到它們利用Windows.Form類。
不幸的是,我使用Windows Presentation Foundation WPF參考來創建我的應用程序UI。 現在,我看到WPF不支持NotifyIcon。 我看到CodePlex上有一個開放源代碼庫,它模擬NotifyIcon屬性WPF Contrib(我尚未使用過)。
現在我可以解決了。 這是我的問題:
a)我不想只為一個組件合並3'rd party庫。
b)我可以在WPF上沒有NotifyIcon的情況下執行最小化功能嗎? 如果是的話,請問有人可以給我線索嗎?
或者,也許我應該將UI恢復為使用Windows窗體?
如果您重新考慮不願使用外部組件,則建議使用WPF NotifyIcon 。 我用過了 簡單明了,效果很好。
它不僅依賴於相應的WinForms組件,還是一個純粹的獨立控件,它利用WPF框架的多個功能來顯示豐富的工具提示,彈出窗口,上下文菜單和氣球消息。
我今天剛看過這篇文章。
作為參考,我也解決了這個問題。 它工作得很好,並且我唯一遇到問題的地方有時是在某些多顯示器設置上。
這是在GIT和NuGets接觸之前,如果有興趣,我會將其放在GIT回購中。
這是一個主題,對我有很大幫助。
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);
}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.