簡體   English   中英

使用WPF將應用程序最小化到系統托盤(不使用NotifyIcon)

[英]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回購中。

CodeProject文章在這里

這是一個主題,對我有很大幫助。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM