คุณต้องใช้การควบคุม NotifyIcon จาก System.Windows.Forms หรือคุณสามารถใช้ Notify Icon API ที่ Windows API จัดเตรียมให้ WPF ไม่มีสิ่งใดเทียบเท่ากันและได้รับการร้องขอจาก Microsoft Connect หลายครั้ง
ฉันมีรหัสบน GitHub ซึ่งใช้System.Windows.Forms
คอมโพเนนต์ NotifyIcon จากภายในแอปพลิเคชัน WPF สามารถดูรหัสได้ที่https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs
นี่คือบิตสรุป:
สร้างหน้าต่าง WPF ด้วย ShowInTaskbar = False และโหลดในสถานะที่มองไม่เห็น
ในระดับชั้น:
private System.Windows.Forms.NotifyIcon notifyIcon = null;
ระหว่าง OnInitialize ():
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];
ระหว่าง OnLoaded ():
notifyIcon.Visible = true;
และสำหรับการโต้ตอบ (แสดงเป็น alertIcon.Click และ DoubleClick ด้านบน):
void notifyIcon_Click(object sender, EventArgs e)
{
ShowQuickLaunchMenu();
}
จากที่นี่คุณสามารถใช้ WPF Controls และ API ต่อได้เช่นเมนูบริบทหน้าต่างป๊อปอัปเป็นต้น
มันง่ายมาก คุณไม่จำเป็นต้องใช้ WPF Window เพื่อโฮสต์ส่วนประกอบมันเป็นวิธีที่สะดวกที่สุดในการแนะนำหนึ่งแอพพลิเคชั่น WPF (โดยทั่วไปแล้ว Window เป็นจุดเริ่มต้นที่กำหนดไว้ผ่าน App.xaml) เช่นเดียวกันคุณไม่ต้อง ' ไม่จำเป็นต้องมี WPF Wrapper หรือการควบคุมโดยบุคคลที่สามเนื่องจากมีการรับประกันส่วนประกอบของ SWF ในการติดตั้ง. NET Framework ใด ๆ ซึ่งมีการสนับสนุน WPF เนื่องจากเป็นส่วนหนึ่งของ. NET Framework (ซึ่งเวอร์ชัน NET Framework ปัจจุบันและอนาคตทั้งหมดสร้างขึ้น) จนถึงปัจจุบันไม่มีข้อบ่งชี้จาก Microsoft ว่าการสนับสนุน SWF จะถูกดร็อปจาก. NET Framework เร็ว ๆ นี้
หวังว่าจะช่วย
มันเป็นชีสตัวน้อยที่คุณต้องใช้ชิ้นส่วน Framework 3.0 ล่วงหน้าเพื่อรับไอคอนถาด แต่เข้าใจได้อย่างที่ Microsoft อธิบายไว้ไม่มีแนวคิดของ System Tray ในขอบเขตของ WPF WPF เป็นเทคโนโลยีการนำเสนอและไอคอนการแจ้งเตือนเป็นแนวคิดของระบบปฏิบัติการ (ไม่ใช่แนวคิด "การนำเสนอ")