wake-up-neo.net

Minimierung der Anwendung in der Taskleiste mithilfe von WPF

Ich bin mit der Erstellung meines Antrags fertig und möchte nun "Minimieren in die Taskleiste" dafür verwenden. Ich lese einen guten Artikel minimiere App in der Taskleiste . Mir wurde klar, dass diese die Windows.Form-Klasse verwenden. 

Leider habe ich Windows Presentation Foundation WPF-Referenz verwendet, um meine Anwendungs-Benutzeroberfläche zu erstellen. Jetzt sehe ich, dass das NotifyIcon in WPF nicht unterstützt wird. Ich sehe, dass es eine offene Quellbibliothek in CodePlex gibt, die die NotifyIcon-Eigenschaften simuliert WPF Contrib Ich habe sie noch nicht verwendet. 

Jetzt bin ich in einer Verlegenheit. Hier sind meine Fragen: - 

a) Ich möchte keine 3. Party-Bibliothek für eine einzelne Komponente einrichten. 

b) Kann ich die Minimierungsfunktion ohne NotifyIcon für WPF ausführen? Wenn ja dann wie kann mir bitte jemand Leads geben?

Oder vielleicht sollte ich meine Benutzeroberfläche wieder auf Windows Forms zurücksetzen? 

20
rockstar

Wenn Sie Ihre Zurückhaltung bei der Verwendung einer externen Komponente noch einmal überdenken, empfehle ich WPF NotifyIcon . Ich habe es benutzt. Es ist unkompliziert und funktioniert gut.

Es ist nicht nur auf die entsprechende WinForms-Komponente angewiesen, sondern ist ein rein unabhängiges Steuerelement, das verschiedene Funktionen des WPF-Frameworks nutzt, um umfangreiche QuickInfos, Popups, Kontextmenüs und Sprechblasen anzuzeigen. 

29
Marksl

Ich bin heute gerade auf diesen Beitrag gestoßen. 

Als Referenz habe ich das auch vor einiger Zeit gelöst. Es funktioniert sehr gut und das einzige Mal, dass ich ein Problem hatte, ist gelegentlich bei einigen Multi-Display-Setups. 

Dies war, bevor GITs und NuGets das In-Ding waren, ich werde es in ein GIT-Repo stellen, wenn Interesse besteht.

CodeProject-Artikel hier

2
Murray Foxcroft

Hier ist ein Thread, der mir sehr geholfen hat.

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);
}}
0
Maifee Ul Asad