** โครงการนี้เป็นความต่อเนื่องของโครงการฐานที่ไม่ได้ใช้งานไปยังแพลตฟอร์มอื่น ๆ (WinUI/Uno.Skia.Wpf/Console) - https://github.com/hardcodet/wpf-notifyicon **
นี่คือการใช้งาน NotifyIcon (หรือที่เรียกว่าไอคอนถาดระบบหรือไอคอนแถบงาน) สำหรับแพลตฟอร์ม .Net 6 WPF/WinUI/Uno.Skia.WPF/Console ไม่เพียงแต่พึ่งพาส่วนประกอบ Windows Forms NotifyIcon เท่านั้น แต่ยังเป็นการควบคุมอิสระล้วนๆ ซึ่งใช้ประโยชน์จากคุณสมบัติต่างๆ ของเฟรมเวิร์ก WPF/WinUI เพื่อแสดงคำแนะนำเครื่องมือ ป๊อปอัป เมนูบริบท และข้อความบอลลูนที่หลากหลาย สามารถใช้โดยตรงในโค้ดหรือฝังอยู่ในไฟล์ XAML ใดก็ได้
Install-Package H.NotifyIcon.Wpf
Install-Package H.NotifyIcon.WinUI
Install-Package H.NotifyIcon.Uno
Install-Package H.NotifyIcon.Uno.WinUI
# If you need other platforms, you can use this Core library -
# it allows you to make NotifyIcon even in a console application.
Install-Package H.NotifyIcon
< Window
xmlns : tb = " clr-namespace:H.NotifyIcon;assembly=H.NotifyIcon.Wpf " // WPF
xmlns : tb = " using:H.NotifyIcon " // WinUI
>
< tb : TaskbarIcon
ToolTipText = " ToolTip "
IconSource = " /Images/TrayIcons/Logo.ico "
ContextMenu = " {StaticResource TrayMenu} "
MenuActivation = " LeftOrRightClick "
TrayPopup = " {StaticResource TrayStatusPopup} "
PopupActivation = " DoubleClick "
TrayToolTip = " {StaticResource TrayToolTip} "
/>
</ Window >
Windows 11 แนะนำแนวคิดใหม่ที่เรียกว่าโหมดประสิทธิภาพ
เนื่องจากโดยพื้นฐานแล้ว ไลบรารีนี้มีไว้สำหรับแอปพลิเคชันที่จะอยู่ในพื้นหลังโดยมีความสามารถในการโต้ตอบผ่าน TrayIcon ไลบรารีจึงใช้ API สำหรับโหมดนี้:
EfficiencyModeUtilities . SetEfficiencyMode ( bool value )
WindowExtensions . Hide ( this Window window , enableEfficiencyMode : true ) // default value
WindowExtensions . Show ( this Window window , disableEfficiencyMode : true ) // default value
TaskbarIcon . ForceCreate ( bool enablesEfficiencyMode = true ) // default value
ตัวอย่างที่ 1:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
Foreground = " Red "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
ตัวอย่างที่ 2:
< tb : TaskbarIcon
IconSource = " /Icons/Error.ico "
>
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " 5 "
Foreground = " Black "
FontSize = " 36 "
FontWeight = " Bold "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
ตัวอย่างที่ 3:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
Foreground = " Red "
FontFamily = " Segoe UI Emoji "
Background = " AliceBlue "
FontWeight = " Bold "
FontSize = " 38 "
/>
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
ตัวอย่างที่ 4:
< tb : TaskbarIcon >
< tb : TaskbarIcon .IconSource>
< tb : GeneratedIconSource
Text = " "
BorderThickness = " 5 "
FontSize = " 46 "
>
< tb : GeneratedIconSource .Foreground>
< LinearGradientBrush StartPoint = " 0,0 " EndPoint = " 128,128 " >
< GradientStop Color = " White " />
< GradientStop Color = " Red " />
</ LinearGradientBrush >
</ tb : GeneratedIconSource .Foreground>
< tb : GeneratedIconSource .BorderBrush>
< LinearGradientBrush StartPoint = " 0,0 " EndPoint = " 128,128 " >
< GradientStop Color = " White " />
< GradientStop Color = " Red " />
</ LinearGradientBrush >
</ tb : GeneratedIconSource .BorderBrush>
</ tb : GeneratedIconSource >
</ tb : TaskbarIcon .IconSource>
</ tb : TaskbarIcon >
ขอแนะนำให้ปักหมุดไอคอนตัวออกแบบเพื่อให้ดูได้ง่าย ในการดำเนินการนี้ ไปที่การตั้งค่าแถบงาน -> ไอคอนถาดระบบอื่นๆ และเปิดใช้งานไอคอนนี้:
ในขณะนี้ มีการใช้งานสามโหมด แต่ละโหมดมีข้อดีและข้อเสียของตัวเอง
ความพร้อมใช้งานของตัวเลือกต่างๆ (ขึ้นอยู่กับเวอร์ชันของ WindowsAppSDK
ที่คุณใช้):
ตัวเลือก | แอพแพ็คเกจ | แอปที่ไม่ได้บรรจุหีบห่อ |
---|---|---|
ความโปร่งใส | ตั้งแต่ 1.1.0-พรีวิว | ตั้งแต่ 1.1.0-พรีวิว |
ไร้ขอบ | ตั้งแต่ 1.1.0-พรีวิว | |
ภาพเคลื่อนไหว | แต่มีขอบเขต | ตั้งแต่ 1.1.0-พรีวิว |
เมนูย่อย |
ลำดับความสำคัญสำหรับข้อบกพร่อง: https://github.com/HavenDV/H.NotifyIcon/issues ลำดับความสำคัญสำหรับแนวคิดและคำถามทั่วไป: https://github.com/HavenDV/H.NotifyIcon/discussions ฉันยังมี Discord ช่องทางการสนับสนุน:
https://discord.gg/g8u2t9dKgE