WPF的ContextMenu托盘图标

本文关键字:托盘图标 ContextMenu WPF | 更新日期: 2023-09-27 18:13:35

我有一个WPF应用程序,我可以最小化托盘。当我正常点击它,窗口再次显示。

现在我想知道如何创建一个简单的ContextMenu ?

ContextMenu必须填满x选项,其中onclick将运行一个函数。现在我只需要一个'Exit'项目链接到'Exit_Click'方法。

我试过的是:

ContextMenu menu = (ContextMenu)this.FindResource("NotifierContextMenu");
menu.IsOpen = true;

menu不知道任何IsOpen的值

其他例子喜欢使用很多不同的东西。其中一个因为某些原因需要我创建一个HostManager。

我只需要一个简单的ContextMenu。我怎样才能做到这一点呢?

WPF的ContextMenu托盘图标

提到Hardcodet的NotifyIcon对于WPF任务栏图标来说非常好。很遗憾,你没有从WPF中得到这个,但你不妨使用它并解决你的问题,而不是等待微软来修复它(他们真的应该把这个库添加到标准中)

现在解决您的问题(使用上述解决方案):

  • 下载方案
  • 构建库
  • 添加到你的源代码控制,如果你有一个,并添加一个引用到它(Hardcodet.Wpf.TaskbarNotification.dll)在你的项目

现在进入主窗口。在Xaml中可以这样写:

<Window ...
        xmlns:tb="http://www.hardcodet.net/taskbar"
        ...>
  ...
  <Grid>
    <tb:TaskbarIcon>
      <tb:TaskbarIcon.ContextMenu>
        <ContextMenu>
          <MenuItem Click="Exit_Click"
                    Header="Exit" />
        </ContextMenu>
      </tb:TaskbarIcon.ContextMenu>
    </tb:TaskbarIcon>
    ...
  </Grid>
</Window>

和MainWindow.xaml.cs与您需要的点击处理程序:

private void Exit_Click(object sender, RoutedEventArgs e) {
  Application.Current.Shutdown();
}

我建议花一些时间看看库源代码附带的示例,以熟悉可用的选项。相信我,wpf在帮助库方面做得太简单了。尝试一些qt helper库,你就会知道"埋藏在某处"在开源helper中的字面意思。