WPF系统托盘图标的右键菜单

3

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

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

ContextMenu必须填充x个选项,当单击时运行一个函数。现在我只需要一个“退出”项目链接到一个“Exit_Click”方法。

我尝试过的一些方法是:

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

menu不知道任何IsOpen值。

其他示例使用了很多不同的东西。 其中一个需要我出于某种原因创建一个HostManager。

我只需要一个简单的ContextMenu。 我该如何实现?

1个回答

7

正如 @H.B. 所提到的,Hardcodet's NotifyIcon 对于 WPF 任务栏图标非常好用。很遗憾在 WPF 中你不能直接使用它,但你最好使用它并解决你的问题,而不是等待微软修复它(他们真的应该将那个库添加到标准中)。

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

  • 下载该解决方案
  • 构建该库
  • 如果有源代码控制,请将其添加到源代码控制中,并在项目中添加对它(Hardcodet.Wpf.TaskbarNotification.dll)的引用

现在在你的 MainWindow.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辅助库,您就会知道在开源辅助程序中“ buried in there somewhere”字面意义是什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接