2012-09-14 12 views
8

Soy muy nuevo en la programación de C#, aunque he escrito C# en unity3D durante algunos años. Actualmente estoy tratando de hacer un icono de la bandeja de WPF, todas las fuentes que he encontrado en la red dime utilizarC# trayicon usando wpf

System.Windows.Forms 

Sin embargo .Forms no está disponible en System.Windows para mí, y tengo no tengo idea por qué no. Puede alguien ayudarme con esto?

Respuesta

25

es necesario agregar referencias a los System.Window.Forms y asambleas System.Drawing y luego utilizar de esta manera. Supongamos que intenta minimizar el icono de ventana a bandeja y volver a mostrarlo cuando el usuario hace clic en ese icono:

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

Excelente la palabra referencia me ayudó a descubrir cómo y dónde. Y ahora tengo un ícono de bandeja, gracias =) – Logan

+2

Si lo tiene en una ventana con referencias de System.Windows, se encontrará con algunos problemas de ambigüedad. Lo resolví añadiendo un nombre al uso: usando WinForms = System.Windows.Forms; Luego lo llamó con WinForms.NotifyIcon notifyIcon = new WinForms.NotifyIcon(); –