我想快速給WPF程式添加托盤菜單 1 簡單要求: 使用開源控制項庫 在XAML中聲明托盤菜單,就像給控制項添加ContextMenu一樣 封裝了常用命令,比如:打開主窗體、退出應用程式等 我在TerminalMACS中添加了托盤菜單,最終實現的托盤菜單效果: 2 如何做? 【Step 1】在已創建的WP ...
我想快速給WPF程式添加托盤菜單
1 簡單要求:
- 使用開源控制項庫
- 在XAML中聲明托盤菜單,就像給控制項添加ContextMenu一樣
- 封裝了常用命令,比如:打開主窗體、退出應用程式等
我在TerminalMACS中添加了托盤菜單,最終實現的托盤菜單效果:
2 如何做?
【Step 1】在已創建的WPF項目中,添加HandyControl庫,並安裝:
你問我為什麼要使用HC控制項庫?先看Demo效果:
常用的托盤效果應該都能滿足了吧?而實現這些效果,我們自己要碼的代碼真的不多,因為HC已經封裝了,我們直接使用即可。
【Step 2】在窗體中添加HandyControl命名空間
xmlns:hc="https://handyorg.github.io/handycontrol"
【Step 3】聲明托盤菜單關鍵的19行代碼
<hc:NotifyIcon x:Name="NotifyIconContextContent"
Text="{markup:I18n {x:Static i18NResources:Language.AppTitle}}"
Visibility="Visible"
Icon="/Images/logo.ico">
<hc:NotifyIcon.ContextMenu>
<ContextMenu>
<MenuItem Command="hc:ControlCommands.PushMainWindow2Top" Header="{markup:I18n {x:Static i18NResources:Language.PushMainWindow2Top}}"/>
<MenuItem Command="hc:ControlCommands.ShutdownApp" Header="{markup:I18n {x:Static i18NResources:Language.Exit}}"/>
</ContextMenu>
</hc:NotifyIcon.ContextMenu>
<hc:Interaction.Triggers>
<hc:EventTrigger EventName="Click">
<hc:EventToCommand Command="hc:ControlCommands.PushMainWindow2Top"/>
</hc:EventTrigger>
</hc:Interaction.Triggers>
</hc:NotifyIcon>
上面的代碼,一個托盤菜單基本上算完事了,簡單說一下:
- NotifyIcon為托盤菜單控制項,Text顯示托盤菜單名稱,將滑鼠放在托盤圖標上,ToolTip顯示該字元串,一般顯示應用程式名稱,如下圖:
- hc:NotifyIcon.ContextMenu 用於聲明菜單項,本項目目前加了打開主窗體、退出應用程式兩個菜單,而這兩個菜單對應的命令HC已經封裝,方便使用。
- 另外,單擊托盤菜單,也可彈出應用程式主視窗
【Step 4】手動關閉主窗體時,隱藏而不退出
添加了托盤菜單後,在關閉主窗體時,應該重寫OnClosing事件,隱藏主窗體,而不是直接關閉它。
protected override void OnClosing(CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
}
3 更多參考
更多Demo源碼請參考 HandyControl
本文源碼TerminalMACS