【问题标题】:WPF ContextMenu for tray icon托盘图标的 WPF ContextMenu
【发布时间】:2013-05-14 14:46:41
【问题描述】:

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

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

ContextMenu 必须填充 x 选项,onclick 将运行一个函数。现在我只需要一个链接到“Exit_Click”方法的“Exit”项目。

我尝试过的是:

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

menu 不知道任何 IsOpen 值。

其他示例喜欢使用很多不同的东西。 One of them requires me to create a HostManager for some reason.

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

【问题讨论】:

    标签: c# wpf contextmenu tray


    【解决方案1】:

    作为@H.B.提到Hardcodet's NotifyIcon 非常适合 WPF 任务栏图标。糟透了,您没有使用 WPF 开箱即用,但您最好使用它并解决您的问题,而不是等待 Microsoft 修复它(他们真的应该将该库添加到标准中)

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

    • 下载解决方案
    • 构建库
    • 如果您有源代码管理,请将其添加到源代码管理中,并在您的项目中添加对它的引用 (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 帮助程序库,您就会知道“埋在某处”在开源帮助程序中的字面意思。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-23
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多