我找到一个非常简单实用的静态类,可以让我们使用非常轻松地实现系统托盘。话不多说直接贴代码:
<Application x:Class="SmallTool.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SmallTool"
StartupUri="SyncTime.xaml">
<Application.Resources>
<ResourceDictionary>
<ContextMenu x:Key="NotifyIconMenu" StaysOpen="False">
<MenuItem Name="MenuOpen" Click="MenuOpen_Click" Header="打开" />
<MenuItem Name="MenuExit" Click="MenuExit_Click" Header="退出" />
</ContextMenu>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
public class NotifyIconBar
{
public static NotifyIconBar Instance;
public static event MouseEventHandler DoubleClick;
public NotifyIcon Notify { get; set; }
static NotifyIconBar() { Instance = new NotifyIconBar(); }
private NotifyIconBar()
{
Notify = new NotifyIcon();
Notify.Icon = new Icon(System.Windows.Application.GetResourceStream(new Uri("Resources/favicon.ico", UriKind.Relative)).Stream);
Notify.MouseDoubleClick += Nofity_MouseDoubleClick;
Notify.MouseClick += Nofity_MouseClick;
Notify.Visible = true;
}
private void Nofity_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (DoubleClick != null) { DoubleClick(sender, e); }
}
private void Nofity_MouseClick(object sender, MouseEventArgs e)
{
System.Windows.Controls.ContextMenu NotifyIconMenu = (System.Windows.Controls.ContextMenu)App.Current.FindResource("NotifyIconMenu");
if (e.Button == MouseButtons.Right) { NotifyIconMenu.IsOpen = true; } else { NotifyIconMenu.IsOpen = false; }
}
public void DisposeNotifyIcon() { Notify?.Dispose(); }
}
代码不是完整的,需要的自己在搞起来!