【问题标题】:Right-Click Context Menu in System Tray系统托盘中的右键单击上下文菜单
【发布时间】:2011-01-15 16:32:53
【问题描述】:

我有一个在系统托盘中运行的 WPF 应用程序。我正在尝试创建一个上下文菜单,当您右键单击托盘中的图标时会弹出该菜单。这是 XAML:

<Window.Resources>
        <ContextMenu x:Key="NotifierContextMenu" Placement="MousePoint">
            <MenuItem Header="Exit" Click="Menu_Exit"/>
        </ContextMenu>
    </Window.Resources>

这里是代码隐藏:

void NotifyIcon_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                var menu = this.FindResource("NotifierContextMenu") as ContextMenu;
                menu.IsOpen = true;
            }
        }

        protected void Menu_Exit(object sender, RoutedEventArgs e)
        {
            NotifyIcon.Visible = false;
            Application.Current.Shutdown();
        }

我遇到的问题是,当您右键单击该图标时,会引发无法找到 NotifierContextMenu 的错误。我错过了什么?

【问题讨论】:

    标签: wpf contextmenu


    【解决方案1】:

    我自己试过这个没有问题。您的 MouseDown 事件处理程序实际上是创建 NotifierContextMenu 的同一类的一部分,对吗?

    也许可以尝试编写一些代码来列出资源,看看是否可以匹配它所指的资源集。

    【讨论】:

    • 是的,他们在同一个班级。我在这个应用程序中运行 Parallel.Foreach 代码,当我评论它工作正常时。知道如何让它工作吗?
    • ForEach 是否有可能导致该线程出现问题?您可以尝试创建一个 BackgroundWorker 并将 Parallel.ForEach 东西放入其中以将其移至不同的线程吗?我从未使用过 Parallel.ForEach,但它与 MSDN 中的一堆线程相关。只是一个想法。
    猜你喜欢
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2017-04-22
    相关资源
    最近更新 更多